Marcelo Alejandro España Koock escribió:
> 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?

Usa un tipo anónimo, pero tienes que declararlo en el SELECT:

create or replace function f() returns setof record language sql as $$ select 
oid, relname from pg_class; $$ ;
select * from f() as (oid oid, relname name);

O bien usa parámetros OUT, que indican el tipo de la consulta de salida:

create function f(out oid, out name) returns setof record language sql as $$ 
select oid, relname from pg_class; $$ ;
select * from f();


También podrías crear un tipo especial usando CREATE TYPE AS.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a