Herman Estaban escribió: > 2do: > > CREATE OR REPLACE FUNCTION F_CONSULTA_PARAMETRO2(VARCHAR) RETURNS > SETOF record AS $$ > SELECT APPATER || ' ' || APMATER || ' ' || NOMBRES AS PERSONA > FROM MA_PERSONAL > WHERE IDCODIGO = $1; > $$ LANGUAGE SQL; > > SELECT * FROM F_CONSULTA_PARAMETRO2('000033') AS (PERSONA VARCHAR);
> El 2do me podria servir para select mas personalizados con joins pero > tendria que declarar siempre el campo o los campos de la tablas o > tablas involucradas en el select? > > Hay manera de crear una función sin necesidad de estar declarando los campos? El sistema necesita saber qué tipo retorna la función antes de ejecutarla. Si usas RETURNS SETOF RECORD entonces debes indicar el tipo al momento de invocar la función, que es la cláusula AS. Si usas un nombre de tipo específico, la cláusula AS no es necesaria. Si necesitas un tipo que no corresponde con ninguna tabla, puedes crearlo: CREATE TYPE retorno_de_funcion AS (campo1 int, campo2 text, campo3 date); CREATE FUNCTION .... RETURNS SETOF retorno_de_funcion ... -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda