PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Existe-t-il une fonction temp ?

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 :