Não há
CREATE TEMP FUNCTION ...
como o CREATE TEMP TABLE ...
existente . Mas existe o truque para criar uma função no esquema temporário pg_temp
, como a resposta vinculada
. A função só é visível na mesma sessão e só pode ser chamada pelo nome qualificado pelo esquema: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
Eu poderia rastrear a ideia para esta postagem de Tom Lane em pgsql-geral .
A coisa mais próxima sem truques seria uma declaração preparada . Funciona como uma função SQL temporária que morre no final da sessão. Não é o mesmo coisa, porém, e só pode ser usado por si só, não no contexto de uma consulta maior. Exemplo:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Ligar:
EXECUTE upd_tbl(123, 'foo_name');
Detalhes: