Marcelo:

 

- Los nombres de las variables OUT pueden ser diferentes a los nombres de los 
campos de las tablas

 

Si, pueden ser diferentes

 

- 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)

 

Si, los tipos de datos de las variables OUT, deben ser iguales a los que te 
retornan las tuplas

 

Saludos

 

Mario Soto Cordones

 

De: Marcelo Alejandro España Koock [mailto:mespa...@gmail.com] 
Enviado el: miércoles, 15 de octubre de 2014 14:09
Para: Mario Soto Cordones
CC: pgsql-es-ayuda@postgresql.org
Asunto: Re: [pgsql-es-ayuda] Funciones SQL

 

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 <mailto: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 
<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 <mailto: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 <mailto: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>  
[mailto: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 <mailto: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