Il n'y a pas de CREATE TEMP FUNCTION ...
comme le CREATE TEMP TABLE ...
existant . Mais il y a l'astuce pour créer une fonction dans le schéma temporaire pg_temp
, comme la fournit une réponse liée
. La fonction n'est visible qu'au sein de la même session et ne peut être appelée que par un nom qualifié par le schéma :
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
Je pourrais remonter l'idée à ce message de Tom Lane sur pgsql-général .
La chose la plus proche sans astuces serait une déclaration préparée . Agit un peu comme une fonction SQL temporaire qui meurt à la fin de la session. Pas le même chose, cependant, et ne peut être utilisé que par lui-même, pas dans le contexte d'une requête plus importante. Exemple :
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Appel :
EXECUTE upd_tbl(123, 'foo_name');
Détails :