Nie ma CREATE TEMP FUNCTION ...
jak istniejąca CREATE TEMP TABLE ...
. Istnieje jednak sztuczka polegająca na utworzeniu funkcji w tymczasowym schemacie pg_temp
, jak odpowiedź z linkiem
. Funkcja jest widoczna tylko w ramach tej samej sesji i może być wywołana tylko przez nazwę zakwalifikowaną do schematu:
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
Mogłem prześledzić ten pomysł do tego posta Toma Lane na pgsql-ogólne .
Najbliższą rzeczą bez sztuczek byłoby przygotowane oświadczenie . Działa podobnie jak tymczasowa funkcja SQL który umiera pod koniec sesji. Nie tak samo rzecz jednak i może być używany tylko sam, a nie w kontekście większego zapytania. Przykład:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Zadzwoń:
EXECUTE upd_tbl(123, 'foo_name');
Szczegóły: