From: | Felipe Araoz Ramos <faraoz(at)gmail(dot)com> |
---|---|
To: | PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Store procedure para retorar consulta |
Date: | 2013-09-10 15:26:14 |
Message-ID: | CAM6fARx5b0xaLq7FqR3g4WJZQqz76jW8ba5V7B20AG3_jGSwQw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2013-09-10 16:01:27 | Re: Store procedure para retorar consulta |
Previous Message | Felipe Araoz Ramos | 2013-09-10 14:18:05 | Store procedure para retorar consulta |