Neexistuje žádná CREATE TEMP FUNCTION ...
jako stávající CREATE TEMP TABLE ...
. Existuje však trik, jak vytvořit funkci v dočasném schématu pg_temp
, stejně jako odpovědi s odkazem
. Funkce je viditelná pouze v rámci stejné relace a lze ji volat pouze jménem kvalifikovaným pro 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
Nápad jsem mohl vysledovat k tomuto příspěvku Toma Lanea na pgsql-general .
Nejbližší věc bez triků by byla připravená výpověď . Funguje podobně jako dočasná funkce SQL který na konci sezení zemře. Není stejný a lze je použít pouze samostatně, nikoli v kontextu většího dotazu. Příklad:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Volejte:
EXECUTE upd_tbl(123, 'foo_name');
Podrobnosti: