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: