Cuando se crea una función, se establece el esquema en el cual se va hace uso de esa función. Pero si dentro del cuerpo de la función instanciamos algun objeto del mismo esquema es necesario establecer dicho esquema, o se asume que el mismo pertenece al mismo esquema en el que se encuentra la función?
Por ejemplo:
SET SEARCH_PATH TO esquema;
CREATE OR REPLACE FUNCTION fc_ejemplo(CHARACTER VARYING)
RETURNS NUMERIC AS
$BODY$
DECLARE
variable ALIAS FOR $1;
BEGIN
SELECT COALESCE(SUM(monto),0) INTO monto
FROM cualquier_tabla
WHERE x_campo = variable;
RETURN monto;
END;
$BODY$
LANGUAGE 'plpgsql';
La duda es si es necesario que la consulta a la tabla referenciada dentro del cuerpo de la función sea: esquema.cualquier_tabla
o solo cualquier_tabla
Re: Función y Esquema
Lun, 15/03/2010 - 14:51 — AnónimoSi se utiliza
SET SEARCH_PATH TO schema;antes de definir algo, lo definido se creara en el esquema definido por SEARCH_PATH.En tu caso no se necesita usar "FROM esquema.cualquier_tabla" siempre y cuando la tabla "cualquier_tabla" solo exista en un solo esquema definido por SEARCH_PATH.
Si se van a usar diferentes esquemas en una base de datos, yo recomiendo usar "esquema.cualquier_objeto" para estar seguro que accedemos/usamos el objeto correcto y no el que primero aparezca en los esquemas definidos por SEARCH_PATH.
Enviar nuevo comentario