POSTGRESQL problema con funciones que utilizan tablas temporales

Gerardo
21 de Julio del 2004
Hola,

Estoy utilizando PostgreSQL 7.4.

El problema es que tengo una funci贸n que devuelve los resultados de una tabla temporal.
Mi funci贸n es mucho m谩s compleja y maneja mas de una tabla temporal, pero para ilustrar, ser铆a algo como lo siguiente:

CREATE OR REPLACE FUNCTION "public"."funcion_prueba" () RETURNS SETOF "pg_catalog"."record" AS'
BEGIN
--CREA TABLA TEMPORAL
CREATE TEMPORARY TABLE tmp_prueba(
x integer
)ON COMMIT DROP;

--INSERTA INFORMACION
INSERT INTO tmp_prueba
SELECT x
FROM tabla;

--RETORNA LOS RESULTADOS
FOR resultado IN SELECT x FROM tmp_prueba LOOP
RETURN NEXT resultado;
END LOOP;
RETURN;
END;
'LANGUAGE 'plpgsql' IMMUTABLE CALLED ON NULL INPUT SECURITY DEFINER;

El asunto es que cuando ejecuto la funci贸n:
SELECT * FROM function_prueba() as r(x integer);
la primera vez se ejecuta adecuadamente, pero cuando la ejecuto por segunda ocaci贸n me da el siguiente error:
"ERROR: no existe la relaci贸n con OID 93031"
y para que funcione denuevo, debo recompilar la funci贸n.

Tengo funciones que no utilizan tablas temporales que no presentan este problema, es por ello que creo que podr铆a andar por all铆 el problema.

Gracias de antemano a cualquier sugerencia,
Gerardo.