PDA

Ver la Versión Completa : Funciones en Postgres


PabloTech
30-08-2007, 22:14:31
Hola a todos...

Según estuve leyendo, las funciones creadas en Postgres solo devuelven un valor y los procedimientos una serie de valores. La pregunta del millón es: ¿Cómo puedo hacer yo para que una función me devuelva el resultado de una consulta (SELECT...)?

Ya probé usando tablas temporales pero no pude hacerlo funcionar. ¿Alguna idea? :confused:

Leviatan
04-12-2007, 22:26:14
Hola:

Si vas a devolver todas las columnas de una sola tabla, deberías hacer lo siguiente:


-- Cuerpo de la función
declare
Fila nombre_tabla;
begin
for Fila in
select * from nombre_tabla loop
return next Fila;
end loop
end;


Si vas a devolver columnas de varias tablas (joins) deberías primeramente crear un type (tipo) con los mismos tipos de datos de las columnas originales y hacer algo como lo siguiente:


-- Cuerpo de la función
declare
Fila tipo_creado;
begin
for Fila in
select columna1, columna2, columna3 from tabla_1 t1 join tabla2 t2 on
t1.id_columna = t2.id_columna loop
return next Fila;
end loop;
end;


Espero te sirva.