Re: Por favor, ayuda con esquemas

From: Rodrigo Gonzalez <listas(at)estrads(dot)com(dot)ar>
To: Jo Mateix <2uolap2(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Por favor, ayuda con esquemas
Date: 2012-03-14 12:09:45
Message-ID: 20120314090945.7a352c6d@estrads.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, 13 Mar 2012 23:18:08 +0100
Jo Mateix <2uolap2(at)gmail(dot)com> wrote:

> Creo esta función en esquema public :
>
> CREATE OR REPLACE FUNCTION zz()
> RETURNS text AS
> $BODY$
> DECLARE
> declare resultado varchar(35);
> BEGIN
>
> select titulo into resultado
> from empresas;
>
> return resultado;
> END;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
> ALTER FUNCTION zz()
> OWNER TO postgres;
>
> set search_path=esquema1,public;
> select * from empresas; -- Me devuelve
> correctamente el nombre de la empresa en esquema1
> select zz(); -- Me devuelve
> correctamente el nombre de la empresa en esquema1
>
> set search_path=esquema2,public;
> select * from empresas; -- Me devuelve
> correctamente el nombre de la empresa en esquema2
> select zz(); *Sigue devolviendo el
> nombre de esquema1, porque?*
> Por mucho que cambie el esquema con search_path, si no cierro la
> sesión, la función zz() siempre se ejecuta en el esquema1.
> Si cierro la sesión y la función se ejecuta primero en esquema2
> devuelve el resultado de este pero ya es imposible ejecutarla y que
> devuelva el resultado del esquema1.
>
> Es posible forzarle el esquema sobre el cual debe actuar? o bien
> limpiar la memoria que se queda de la primera ejecución sin necesidad
> de cerrar la sesión?
>

Cambia:
select titulo into resultado from empressas

Por:
EXECUTE SELECT titulo FROM empresas INTO resultado

Esto va a hacer que plpgsql no guarde el plan que usa para la consulta
y por lo tanto no tenga nada para reutilizar

Espero que te sirva y que este correcto porque no tuve tiempo de
probarlo....

Saludos

Rodrigo

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Linder Poclaba Lazaro 2012-03-14 12:19:16 Re: [pgsql-es-ayuda] Error al ejecutar una función en PostgreSQL
Previous Message Jorge Tornero - Listas 2012-03-14 12:02:27 Detectar filas con n ulos