Es gibt keine CREATE TEMP FUNCTION ...
wie das bestehende CREATE TEMP TABLE ...
. Aber es gibt den Trick, eine Funktion im temporären Schema pg_temp
zu erstellen , wie die verlinkte Antwort
bereitstellt . Die Funktion ist nur innerhalb derselben Sitzung sichtbar und kann nur mit dem Schema-qualifizierten Namen aufgerufen werden:
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
Ich konnte die Idee auf diesen Beitrag von Tom Lane zurückführen pgsql-allgemein .
Am ehesten ohne Tricks wäre ein vorbereitetes Statement . Verhält sich ähnlich wie eine temporäre SQL-Funktion das stirbt am Ende der Sitzung. Nicht dasselbe Ding jedoch und kann nur für sich allein verwendet werden, nicht im Kontext einer größeren Abfrage. Beispiel:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Aufruf:
EXECUTE upd_tbl(123, 'foo_name');
Einzelheiten: