PostgreSQL - Problemas con función que usa tablas temporales

 
Vista:

Problemas con función que usa tablas temporales

Publicado por Gerardo (1 intervención) el 21/07/2004 17:53:12
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder