Me parece que para lo que deseas hacer puedes crear un tipo de dato según tu 
necesidad y devolver ese tipo, como este ejemplo:

CREATE TYPE public.ct_ prueba AS (
  dato1 INTEGER,
  dato2 INTEGER
);

CREATE OR REPLACE FUNCTION public.fun_prueba (
)
RETURNS public.ct_prueba AS
$body$
DECLARE
  retorno ct_prueba;
  val1 integer;
  val2 integer;
BEGIN

    --De esta via
    /*
    SELECT 2+2 INTO val1;
    SELECT 3+3 INTO val2;
   retorno.dato1 = val1;
    retorno.dato2 = val2;
    */

    --De esta otra via
    SELECT 2+2, 3+2 INTO retorno;

    RETURN retorno;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;

Saludos.
De: [email protected] 
[mailto:[email protected]] En nombre de oscar arocha
Enviado el: jueves, 29 de septiembre de 2011 12:15
Para: [email protected]
Asunto: [pgsql-es-ayuda] Retorno en función

Hola lista, espero estén muy bien, una vez mas recurriendo a su valiosa ayuda, 
Les comento estoy realizando una función que debe retornar un arreglo (pienso 
yo), lo cierto es que debo realizar varios select y devolverlos todos juntos en 
una sola consulta, es decir

SELECT dato INTO arreglo[0] .....
SELECT dato INTO arreglo[1] .....
SELECT dato INTO arreglo[2] .....
SELECT dato INTO arreglo[3] .....
SELECT dato INTO arreglo[4] .....
RETURN arreglo

cada uno de los select realiza un calculo distinto, pero mi intencion es poder 
obtener todos esos valores en un solo arreglo, lo que se me ha complicado es 
que el retorno que obtengo es

arreglo[0]:{valor}

y debería ser solo {valor}

Gracias de antemano

--
Ing. Oscar Arocha
CIV 208.476
0416-4257379
twitter: @ArochaOscar

Responder a