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