Re: Funciones SQL

From: Marcelo Alejandro España Koock <mespanak(at)gmail(dot)com>
To: Mario Soto Cordones <marioa(dot)soto(dot)cordones(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Funciones SQL
Date: 2014-10-15 17:09:14
Message-ID: CAD-_PrEhXgR3cjXMajp4Lvkx6+aeyf6W4h6+kCttsuDLdrgrZw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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(dot)soto(dot)cordones(at)gmail(dot)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:mespanak(at)gmail(dot)com]
> *Enviado el:* miércoles, 15 de octubre de 2014 12:00
> *Para:* Mario Soto Cordones
> *CC:* pgsql-es-ayuda(at)postgresql(dot)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(dot)soto(dot)cordones(at)gmail(dot)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-owner(at)postgresql(dot)org [mailto:
> pgsql-es-ayuda-owner(at)postgresql(dot)org] *En nombre de *Marcelo Alejandro
> España Koock
> *Enviado el:* miércoles, 15 de octubre de 2014 10:57
> *Para:* pgsql-es-ayuda(at)postgresql(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Marcelo Alejandro España Koock 2014-10-15 17:12:07 Re: Funciones SQL
Previous Message Alvaro Herrera 2014-10-15 16:10:42 Re: Funciones SQL