Estimados Mario y Alvaro, Muchas gracias por los tips, más abajo script de test que utilicé para la prueba de concepto:
-- Crea la funcion CREATE OR REPLACE FUNCTION admmek_test_function (out contrato varchar, out empalme varchar) RETURNS SETOF record AS $body$ DECLARE _my_record RECORD; BEGIN RETURN QUERY SELECT a.codigo_contrato::varchar,b.codigo_empalme::varchar FROM contratos a INNER JOIN empalmes b ON a.codigo_empalme = b.codigo_empalme; RETURN; END; $body$ LANGUAGE 'plpgsql'; -- Ejecuta una instrucción SELECT con la funcion SELECT * FROM admmek_test_function() NOTAS: - Los nombres de las variables OUT pueden ser diferentes a los nombres de los campos de las tablas - Se cambia el tipo de dato de los campos del SELECT para que sean iguales a los tipos de datos de las variables de salida OUT (Obligatorio que los tipos de datos sean iguales) -- Atentamente, Marcelo España Koock Cuenta Personal GMAIL El 15 de octubre de 2014, 12:10, Mario Soto Cordones < marioa.soto.cordo...@gmail.com> escribió: > Marcelo: > > > > 1.- Para retornar records, el lenguaje es plpgsql (Procedural Languaje > PostgreSQL). > > 2.- Las variables que dicen OUT, son de Salida, las de entrada tienen IN. > > 3.- Los campos enunciados en la sentencia select, son los que se > devolverán en las variables OUT, es por eso que el select es: > > SELECT a.nombre,a.domicilio,b.telefono > > > > Saludos > > > > Mario Soto Cordones > > > > *De:* Marcelo Alejandro España Koock [mailto:mespa...@gmail.com] > *Enviado el:* miércoles, 15 de octubre de 2014 12:00 > *Para:* Mario Soto Cordones > *CC:* pgsql-es-ayuda@postgresql.org > *Asunto:* Re: [pgsql-es-ayuda] Funciones SQL > > > > Mario, > > > > Muchas gracias, lo que me envias es en leguaje plpgsql y no en lenguaje > sql. Puedo pedirte solo una aclaración: > > > > ( > > out _telefono varchar, > > out _nombre varchar, > > out _domicilio varchar > > ) > > ** Estos son parámetros de entrada o parátemros de salida ** ? > > > > DECLARE > > _*my*_record RECORD; > > ** Basta con esto para saber los registros que serán devueltos son los que > indica el SELECT **? > > > > Gracias > > > > > > El 15 de octubre de 2014, 11:17, Mario Soto Cordones < > marioa.soto.cordo...@gmail.com> escribió: > > Marcelo: > > > > Para retornar todos los registros que te devuelva la consulta, puedes > retornar un Record: > > > > Ejemplo: > > > > CREATE OR REPLACE FUNCTION my_funcion ( > > out _telefono varchar, > > out _nombre varchar, > > out _domicilio varchar > > ) > > RETURNS SETOF record AS > > $body$ > > DECLARE > > _*my*_record RECORD; > > BEGIN > > RETURN QUERY SELECT a.nombre,a.domicilio,b.telefono > > FROM tabla1 a > > INNER JOIN tabla2 b ON a.ID = b.ID; > > RETURN; > > END; > > $body$ > > LANGUAGE 'plpgsql'; > > > > Saludos cordiales > > > > Mario Soto Cordones > > > > > > *De:* pgsql-es-ayuda-ow...@postgresql.org [mailto: > pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *Marcelo Alejandro > España Koock > *Enviado el:* miércoles, 15 de octubre de 2014 10:57 > *Para:* pgsql-es-ayuda@postgresql.org > *Asunto:* [pgsql-es-ayuda] Funciones SQL > > > > Hola Buenos días, > > > > Estoy creando una función SQL en postgres que incluya una instrucción SQL > como la siguiente: > > > > SELECT * > > FROM tabla1 INNER JOIN tabla2 ON tabla1.ID = tabla2.ID > > > > Tabla1 tiene campos ID, nombre, domicilio > > Tabla2 tiene campos ID, teléfono > > > > Cuando creo la función me solicita un tipo de datos para la RETURNS SETOF > > > > ¿Cómo creo ese tipo de datos si la consulta es una combinación de tablas? > > > -- > Atentamente y agradecido de cualquier ayuda, > > Marcelo España Koock > Cuenta Personal > GMAIL > > > > > -- > Atentamente, > > Marcelo España Koock > Cuenta Personal > GMAIL > -- Atentamente, Marcelo España Koock Cuenta Personal GMAIL