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

Responder a