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: