Ya cree el SP siguiente:
Código SQL
[-]
CREATE PROCEDURE ACT_COBRANZ(
COD INTEGER,
MONTO NUMERIC(12, 2),
CODCON INTEGER)
AS
DECLARE VARIABLE MONTOX NUMERIC(12, 2);
DECLARE VARIABLE ESTADOX CHAR(1);
DECLARE VARIABLE CODX INTEGER;
DECLARE VARIABLE CODCONX INTEGER;
DECLARE VARIABLE NCUX SMALLINT;
DECLARE VARIABLE PRIMERPAGO SMALLINT;
DECLARE VARIABLE CUOTAX SMALLINT;
DECLARE VARIABLE DEUDOR CHAR(1);
DECLARE VARIABLE CUOTAACT SMALLINT;
DECLARE VARIABLE DEUDA_BSX NUMERIC(12, 2);
DECLARE VARIABLE DEUDA_ACT NUMERIC(12, 2);
BEGIN
CODCONX = CODCON;
CODX = COD;
MONTOX = MONTO;
CUOTAX = 0;
DEUDOR = 'D';
CUOTAACT = 0;
WHILE (MONTOX>0)DO
BEGIN
FOR SELECT CNU,ESTADO,DEUDA_BS FROM COBRANZ
WHERE (COBRANZ.CODIGO=:CODX AND COBRANZ.OC =:CODCONX)
INTO :CUOTAX,:ESTADOX,
EUDA_BSX DO
BEGIN
IF (ESTADOX=DEUDOR) THEN
CUOTAACT=CUOTAX;
DEUDA_ACT=DEUDA_BSX;
IF (MONTOX>=DEUDA_ACT) THEN
BEGIN
UPDATE COBRANZ SET PAGO_BS =PAGO_BS+
EUDA_ACT,DEUDA_BS=0,ESTADO='C'
WHERE OC=:CODCONX AND CODIGO=:CODX AND CNU=:CUOTAX;
MONTOX = MONTOX - DEUDA_ACT;
END
else
BEGIN
UPDATE COBRANZ SET PAGO_BS =PAGO_BS+:MONTOX,DEUDA_BS=CARGO_BS-:MONTOX,ESTADO='D'
WHERE OC=:CODCONX AND CODIGO=:CODX AND CNU=:CUOTAX;
MONTOX = 0;
END
END
END
END;
sin embargo a veces sale un mensaje de conflicto de bloqueo en el primer UPDATE COBRANZ que estara mal? les agradezco su tiempo y ayuda