From: | Jo Mateix <2uolap2(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Por favor, ayuda con esquemas |
Date: | 2012-03-13 22:18:08 |
Message-ID: | CAOiapoN-aL0cdZmvhvfJD20yNry9aEq2TRHtODf6vRD-foLJLg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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?
Versión postgres 8.3
Muchas gracias,
Jordi
From | Date | Subject | |
---|---|---|---|
Next Message | Linder Poclaba Lazaro | 2012-03-13 22:37:55 | Re: [pgsql-es-ayuda] Error al ejecutar una función en PostgreSQL |
Previous Message | Erick Urias | 2012-03-13 20:41:17 | Re: Caida de postgres 8.4 |