Ver Mensaje Individual
  #5  
Antiguo 02-01-2012
guachalla guachalla is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 3
Reputación: 0
guachalla Va por buen camino
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
Responder Con Cita