[Pgsql-ayuda] Problemas con funciones

Alvaro Herrera alvherre@dcc.uchile.cl
Tue, 16 Dec 2003 00:01:47 -0300


On Mon, Dec 15, 2003 at 08:13:53PM -0600, Andres Garcia Jimenez wrote:

> 1.- creo un tabla (T1) 
[...]
> 5.- Borro la tabla.

> WARNING:  Error occurred while executing PL/pgSQL function mifuncion
> WARNING:  line 43 at SQL statement
> ERROR:  pg_class_aclcheck: relation 701159 not found

Lo que pasa es que PL/pgSQL mantiene un cache de compilacion.  La
primera vez que ejecutas la funcion, se compila y registra el OID de la
tabla que creaste.  La segunda vez trata de usar ese mismo OID, pero
como creaste la tabla de nuevo, no funciona.

La solucion es usar EXECUTE ''create table ...'' en lugar del CREATE
TABLE directamente.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"La primera ley de las demostraciones en vivo es: no trate de usar el sistema.
Escriba un guión que no toque nada para no causar daños." (Jakob Nielsen)