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

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Linder Poclaba LazaroDate: 2012-03-14 12:19:16
Subject: Re: [pgsql-es-ayuda] Error al ejecutar una función ?==?ISO-8859-1?Q?en PostgreSQL
Previous:From: Jorge Tornero - ListasDate: 2012-03-14 12:02:27
Subject: Detectar filas con n ulos

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