<http://www.postgresql.org/docs/current/static/sql-select.html>
Hola a todos, he estado buscando como crear una función con un SELECT y leyendo en la documentación: http://www.postgresql.org/docs/current/static/sql-select.html Encontre el siguiente los siguientes ejemplos: This example shows how to use a function in the FROM clause, both with and without a column definition list: CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS $$ SELECT * FROM distributors WHERE did = $1; $$ LANGUAGE SQL; SELECT * FROM distributors(111); did | name -----+------------- 111 | Walt Disney CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS $$ SELECT * FROM distributors WHERE did = $1; $$ LANGUAGE SQL; SELECT * FROM distributors_2(111) AS (f1 int, f2 text); f1 | f2 -----+------------- 111 | Walt Disney Y hice pruebas con un select simple: 1ro: CREATE OR REPLACE FUNCTION F_CONSULTA_PARAMETRO(VARCHAR) RETURNS SETOF MA_PERSONAL AS $$ SELECT * FROM MA_PERSONAL WHERE IDCODIGO = $1; $$ LANGUAGE SQL; SELECT * FROM F_CONSULTA_PARAMETRO('000033'); 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 1ro retorna toda la tabla me puede servir para cosas simples que necesite. 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? Saludos