From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: error al ReTORNAR UN CONJUNTO SIN RECORD Y SIN REFCURSOR |
Date: | 2007-02-15 21:49:51 |
Message-ID: | 20070215214951.GV4682@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
jeferson alvarez escribió:
> lo anteriro escrito funciona en el query del pgadmin pero solo una vez
> cuando lo vuelvo a correr me sale el siguiente error
> ERROR: could not open relation with OID 25337
> CONTEXT: PL/pgSQL function "xxxx" line 7 at for over select rows
> ahi si que toy perdido que significa eso y como debo solucionarlo
> mientras espero su respuesta iire buscando informacion sobre oid que no
> se ques gracias de antemano
El problema es la secuencia temporal que estas creando. La primera vez
que se ejecuta la funcion, el OID de la secuencia queda en cache. La
siguiente vez que se ejecuta, la funcion usa el cache para determinar la
existencia de la secuencia, pero como la secuencia fue creada de nuevo,
tiene un OID diferente. El OID 25337 que reportas arriba corresponde a
la secuencia que fue creada la primera vez; la segunda vez que
ejecutaste, la secuencia tiene otro OID.
La solucion seria ejecutar el SELECT a traves de un EXECUTE, aunque
puede resultar algo engorroso.
Lo que yo haria seria no ponerle los numeros a cada registro, evitando
el uso de la secuencia.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | jeferson alvarez | 2007-02-15 21:53:31 | sequence start con una variable......... |
Previous Message | Juan Carlos González | 2007-02-15 21:40:16 | Pregunta |