Er is geen CREATE TEMP FUNCTION ...
zoals de bestaande CREATE TEMP TABLE ...
. Maar er is de truc om een functie te creëren in het tijdelijke schema pg_temp
, zoals het gekoppelde antwoord
. De functie is alleen zichtbaar binnen dezelfde sessie en kan alleen worden aangeroepen met een schema-gekwalificeerde naam:
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
Ik zou het idee kunnen herleiden tot dit bericht van Tom Lane op pgsql-algemeen .
Het beste zonder trucjes zou een voorbereide verklaring zijn . Werkt ongeveer als een tijdelijke SQL-functie die sterft aan het einde van de sessie. Niet hetzelfde ding, en kan alleen op zichzelf worden gebruikt, niet in de context van een grotere zoekopdracht. Voorbeeld:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Bel:
EXECUTE upd_tbl(123, 'foo_name');
Details: