From: | Felipe Araoz Ramos <faraoz(at)gmail(dot)com> |
---|---|
To: | PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Store procedure para retorar consulta |
Date: | 2013-09-10 14:18:05 |
Message-ID: | CAM6fARzVy0cgghJDU-c_scR56XkyfbRms=YDH0ZV+o-Q42oX9A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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*
From | Date | Subject | |
---|---|---|---|
Next Message | Felipe Araoz Ramos | 2013-09-10 15:26:14 | Re: Store procedure para retorar consulta |
Previous Message | Manuel Fernando Aller | 2013-09-09 16:33:47 | Re: vistas materializadas postgres 9.3 |