On 14 Aug 2009, at 18:42, Ing. Eris J. Gómez wrote:
Hi all.
I wrote a function and it does not work properly. What am I doing
wrong?
*- Here is the script ..
---
CREATE OR REPLACE FUNCTION "public"."cxp_balfactura" (x_codcia char,
x_suplidor char, x_factura char, x_monto numeric, x_moneda integer)
RETURNS numeric AS
$body$
DECLARE
cursor1 record;
debitos numeric(14,2);
creditos numeric(14,2);
balance numeric (14,2);
BEGIN
balance := x_monto;
--It doesn't execute this lines, why?
What makes you think that?
for cursor1 in select
cxp_mov_item.tipo_transaccion,sum(item_monto+item_descuento) AS monto
from cxp_mov_item,cxp_mov_head
where cxp_mov_item.cia_codigo = cxp_mov_head.cia_codigo
and cxp_mov_item.mov_codigo = cxp_mov_head.mov_codigo
and cxp_mov_item.fact_codigo = x_factura
and cxp_mov_head.cia_codigo = x_codcia
and cxp_mov_head.supl_codigo = x_suplidor
and cxp_mov_head.id_moneda = x_moneda
and cxp_mov_head.mov_estado <> '*'
GROUP by cxp_mov_item.tipo_transaccion
Does this query return any rows?
loop
You can raise a few notices in the loop body to see what's going on.
The value of tipo_transaccion is probably interesting.
if cursor1.tipo_transaccion = 'ND' then
debitos := debitos + cursor1.monto;
end if;
if cursor1.tipo_transaccion = 'CK' then
creditos := creditos + cursor1.monto;
end if;
if cursor1.tipo_transaccion = 'NC' then
creditos := creditos + cursor1.monto;
end if;
end loop;
Alban Hertroys
--
Screwing up is the correct approach to attaching something to the
ceiling.
!DSPAM:737,4a859c8010135542721450!
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general