Det finns ingen CREATE TEMP FUNCTION ...
som den befintliga CREATE TEMP TABLE ...
. Men det finns tricket att skapa en funktion i det tillfälliga schemat pg_temp
, som det länkade svaret tillhandahåller
. Funktionen är endast synlig inom samma session och kan endast anropas med ett schemakvalificerat namn:
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
Jag kunde spåra idén till det här inlägget av Tom Lane på pgsql-allmänt .
Det närmaste utan knep skulle vara ett förberett uttalande . Fungerar ungefär som en tillfällig SQL-funktion som dör i slutet av sessionen. Inte samma sak, dock, och kan bara användas av sig själv, inte i samband med en större fråga. Exempel:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Ring:
EXECUTE upd_tbl(123, 'foo_name');
Detaljer: