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

Esiste una funzione temporanea?

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: