Skip site navigation (1) Skip section navigation (2)

Problemas con función que usa tablas temporales

From: Gerardo Castillo <gcastillo(at)ice(dot)co(dot)cr>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Problemas con función que usa tablas temporales
Date: 2004-07-21 15:53:47
Message-ID: 0I1700F4ILBMYN@ice.co.cr (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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 Castillo.

Responses

pgsql-es-ayuda by date

Next:From: Felipe FernandezDate: 2004-07-21 16:11:04
Subject: acentos
Previous:From: Andres NatesDate: 2004-07-21 14:21:23
Subject: catalogo de postgres y tipo varchar

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group