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
<far...@gmail.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

Responder a