sql >> Database teknologi >  >> RDS >> PostgreSQL

Er der sådan noget som en temp funktion?

Der er ingen CREATE TEMP FUNCTION ... ligesom den eksisterende CREATE TEMP TABLE ... . Men der er tricket til at oprette en funktion i det midlertidige skema pg_temp , ligesom det linkede svar giver . Funktionen er kun synlig inden for samme session og kan kun kaldes med skema-kvalificeret navn:

CREATE FUNCTION pg_temp.f_inc(int)
  RETURNS int AS 'SELECT $1 + 1' LANGUAGE sql IMMUTABLE;

SELECT pg_temp.f_inc(42);
f_inc
-----
43

Jeg kunne spore ideen tilbage til dette indlæg af Tom Lane på pgsql-generelt .

Det nærmeste uden tricks ville være en forberedt erklæring . Fungerer meget som en midlertidig SQL-funktion der dør i slutningen af ​​sessionen. Ikke det samme ting, dog og kan kun bruges af sig selv, ikke i forbindelse med en større forespørgsel. Eksempel:

PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;

Ring til:

EXECUTE upd_tbl(123, 'foo_name');

Detaljer:




  1. Brug af en PHP-variabel før en MYSQL-forespørgsel

  2. Android SQLite LIKE escape jokertegn

  3. Brug af en variabel til tabelnavn i 'Fra'-sætning i SQL Server 2008

  4. RPAD() Funktion i PostgreSQL