Más abajo la misma función con un parámetro de entrada como filtro. -- Crea la funcion CREATE OR REPLACE FUNCTION admmek_test_function (in filtro_empalme text, 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 WHERE a.codigo_empalme=filtro_empalme; RETURN; END; $body$ LANGUAGE 'plpgsql';
-- Ejecuta una instrucción SELECT con la funcion SELECT * FROM admmek_test_function('0000006346') El 15 de octubre de 2014, 14:09, Marcelo Alejandro España Koock < mespa...@gmail.com> escribió: > 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 > -- Atentamente, Marcelo España Koock Cuenta Personal GMAIL