Re: Store procedure para retorar consulta

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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