No hay CREATE TEMP FUNCTION ...
como el CREATE TEMP TABLE ...
existente . Pero ahí está el truco para crear una función en el esquema temporal pg_temp
, como la respuesta vinculada proporciona
. La función solo es visible dentro de la misma sesión y solo se puede llamar mediante un nombre calificado de 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
Podría rastrear la idea hasta esta publicación de Tom Lane en pgsql-general .
Lo más parecido sin trucos sería una declaración preparada . Actúa como una función SQL temporal que muere al final de la sesión. No es igual cosa, sin embargo, y solo puede usarse por sí mismo, no en el contexto de una consulta más grande. Ejemplo:
PREPARE upd_tbl AS
UPDATE tbl t SET set_name = $2 WHERE tbl_id = $1;
Llamar:
EXECUTE upd_tbl(123, 'foo_name');
Detalles: