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
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 |