Re: Store procedure para retorar consulta

From: Ferrel Navia <fnavia(at)meetme(dot)com>
To: Felipe Araoz Ramos <faraoz(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Store procedure para retorar consulta
Date: 2013-09-10 16:03:55
Message-ID: CAP9XwAj2WO8FndOJjOZ3G7E8QeDaXjQtVHfnxpEakHFWYJTAmw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

El error te indica que no estas guardando el resultado (a regresar) en
ningun lado, tambien podrias declarar unas variables y usar

SELECT INTO variable1, variable2, variableN .....
fprcab.r_grup, fprcab.r_ncom, fprcab.r_fcon, fprcab.r_deta,
fptabl.t_des1, fprcab.r_tdoc, fprcab.r_seri, fprcab.r_ndoc,
fprcab.r_mone, fprcab.r_tasa, fprcab.r_esta...
....
FROM fprcab
....
....

2013/9/10 Felipe Araoz Ramos <faraoz(at)gmail(dot)com>

> Amigos
>
> Disculpen gran error, omití el saludo, "Buen día, amigos del foro"
>
> Saludos
>
> Felipe
>
>
> El 10 de septiembre de 2013 09:18, Felipe Araoz Ramos <faraoz(at)gmail(dot)com>escribió:
>
>
>> Necesito hacer una Stored procedure que me devuelva registros según los
>> parámetros enviados:
>> Select regvtacmp('01','2013','01',02') .....donde los parámetros son
>> código empresa, año mes, código registro.
>>
>> He creado esta función:
>>
>> CREATE OR REPLACE FUNCTION regvtacmp(character, character, character,
>> character)
>>
>> RETURNS SETOF record AS
>>
>> $BODY$
>>
>> declare
>>
>> x_empr alias for $1;
>>
>> x_anop alias for $2;
>>
>> x_mesp alias for $3;
>>
>> x_treg alias for $4;
>>
>> begin
>>
>> SELECT fprcab.r_grup, fprcab.r_ncom, fprcab.r_fcon, fprcab.r_deta,
>> fptabl.t_des1, fprcab.r_tdoc, fprcab.r_seri, fprcab.r_ndoc,
>> fprcab.r_mone, fprcab.r_tasa, fprcab.r_esta,
>>
>> SUM(CASE WHEN fprdet.r_elem = '01' THEN fprdet.r_impn ELSE 0 END) AS
>> val_grav,
>>
>> SUM(CASE WHEN fprdet.r_elem <> '90' and fprdet.r_elem<> '99' and
>> fprdet.r_elem<> '01' THEN fprdet.r_impn ELSE 0 END) AS val_ngrav,
>>
>> SUM(CASE WHEN fprdet.r_elem = '90' THEN fprdet.r_impn ELSE 0 END) AS
>> val_igv,
>>
>> SUM(CASE WHEN fprdet.r_elem = '99' THEN fprdet.r_impn ELSE 0 END) AS
>> val_tot
>>
>> FROM fprcab
>>
>> INNER JOIN fprdet ON
>>
>> fprcab.r_grup = fprdet.r_grup AND
>>
>> fprcab.r_ncom = fprdet.r_ncom
>>
>> INNER JOIN fptabl on
>>
>> fptabl.t_tipo = fprcab.r_tane and
>>
>> fptabl.t_elem = fprcab.r_anex
>>
>> WHERE
>>
>> fprdet.r_empr = x_empr AND
>>
>> fprdet.r_anop = x_anop AND
>>
>> fprdet.r_mesp = x_mesp AND
>>
>> fprdet.r_treg = x_treg
>>
>> GROUP BY
>>
>> fprcab.r_grup, fprcab.r_ncom, fprcab.r_fcon, fprcab.r_deta,
>> fptabl.t_des1, fprcab.r_tdoc, fprcab.r_seri, fprcab.r_ndoc,
>> fprcab.r_mone, fprcab.r_tasa, fprcab.r_esta
>>
>> ORDER BY
>>
>> r_grup, r_ncom;
>>
>> end;
>>
>> $BODY$
>>
>> LANGUAGE plpgsql VOLATILE
>>
>> Pero me devuleve el siguiente error.
>>
>> ERROR: la consulta no tiene un destino para los datos de resultado
>> HINT: Si quiere descartar los resultados de un SELECT, utilice PERFORM.
>> CONTEXT: función PL/pgSQL
>> regvtacmp(character,character,character,character) en la línea 8 en
>> sentencia SQL
>>
>> ********** Error **********
>>
>> ERROR: la consulta no tiene un destino para los datos de resultado
>> Estado SQL:42601
>> Sugerencias:Si quiere descartar los resultados de un SELECT, utilice
>> PERFORM.
>> Contexto:función PL/pgSQL
>> regvtacmp(character,character,character,character) en la línea 8 en
>> sentencia SQL
>>
>>
>>
>> Cual seria la forma adecuada de colocar el destino dentro de la función,
>> lo que quiero es que me devuelva la consulta según los parámetros como
>> como lo haría directamente en consola con select .....
>>
>> A la espera de su ayuda
>>
>>
>> *Felipe*
>>
>
>
>
> --
> *Felipe Araoz Ramos*
> RPM #941990605 / 941990605
> RPC 992760385
> NXT 822*9500 / 998229500
>

--
*Ferrel Navia*
*www.meetme.com*
**
100 Union Square Drive
New Hope, PA,18938

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Araoz Ramos 2013-09-10 17:03:29 Re: Store procedure para retorar consulta
Previous Message Alvaro Herrera 2013-09-10 16:01:27 Re: Store procedure para retorar consulta