Non c'è CREATE TEMP FUNCTION ...
come il CREATE TEMP TABLE ...
esistente . Ma c'è il trucco per creare una funzione nello schema temporaneo pg_temp
, come la risposta collegata
. La funzione è visibile solo all'interno della stessa sessione e può essere chiamata solo con un nome qualificato dallo schema:
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
Potrei far risalire l'idea a questo post di Tom Lane su pgsql-generale .
La cosa più vicina senza trucchi sarebbe una dichiarazione preparata . Funziona in modo molto simile a una funzione SQL temporanea che muore alla fine della seduta. Non lo uguale cosa, tuttavia, e può essere utilizzato solo da solo, non nel contesto di una query più grande. Esempio:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Chiama:
EXECUTE upd_tbl(123, 'foo_name');
Dettagli: