OT: ayuda con store procedure mysql (solucionado)
Posted: Mon Jan 20, 2014 10:04 pm
amigos, solicito su ayuda con este store procedure de mysql,
no me esta funcionando con el parametro tipo fecha, pero si cambio el parametro del select
a esto un literal como esto
si funciona
no me esta funcionando con el parametro tipo fecha, pero si cambio el parametro del select
a esto un literal como esto
WHERE A.FECHA = '2013-11-25' );
si funciona
- Code: Select all Expand view
PROCEDURE `CERRAR_CobroDia`(IN `dFechaCierre` DATE )
BEGIN
DECLARE bContinuar BOOLEAN DEFAULT TRUE;
DECLARE nNUM_PRES, nNUM_ZONA, nNUM_RUTA, nNUM_CIUD, nNUM_CLIE INTEGER DEFAULT 0;
DECLARE dFECHA, dFECHA_INI, dFECHA_FIN DATE DEFAULT 0;
DECLARE nPLAZO, nNUM_CUOTAS INTEGER DEFAULT 0;
DECLARE nABONO, nTOTAL, nVAL_CUOTA, nSALDO FLOAT DEFAULT 0;
DECLARE nINTE_TASA, nMANT_TASA, nDESE_TASA FLOAT DEFAULT 0;
DECLARE nABONO_I, nABONO_D, nABONO_M FLOAT DEFAULT 0;
DECLARE nI_ABONO, nP_ABONO FLOAT DEFAULT 0;
DECLARE nSALDO_I, nSALDO_F FLOAT DEFAULT 0;
DECLARE nSALDO_F_I, nSALDO_F_D, nSALDO_F_M FLOAT DEFAULT 0;
DECLARE nI_SALDO_F, nP_SALDO_F FLOAT DEFAULT 0;
DECLARE cobrodia CURSOR FOR (
SELECT A.NUM_PRES, A.FECHA, A.ABONO,
B.NUM_CIUD, B.NUM_CLIE, B.TOTAL, B.PLAZO, B.NUM_CUOTAS, B.VAL_CUOTA, B.SALDO, B.FECHA_INI, B.FECHA_FIN,
B.INTE_TASA, B.MANT_TASA, B.DESE_TASA,
C.NUM_ZONA, D.NUM_RUTA
FROM DCOBROSXRUTA AS A
INNER JOIN PRESTAMOS AS B ON A.NUM_PRES=B.NUM_PRES
INNER JOIN CIUDADES AS C ON B.NUM_CIUD=C.NUM_CIUD
INNER JOIN CLIENTES AS D ON B.NUM_CLIE=D.NUM_CLIE
WHERE A.FECHA = dFechaCierre );
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bContinuar = FALSE;
DECLARE exit handler for sqlexception
BEGIN
ROLLBACK;
END;
DECLARE exit handler for sqlwarning
BEGIN
ROLLBACK;
END;
SET bContinuar = TRUE;
OPEN cobrodia;
START TRANSACTION;
REPEAT
FETCH cobrodia INTO nNUM_PRES, dFECHA, nABONO,
nNUM_CIUD, nNUM_CLIE, nTOTAL, nPLAZO, nNUM_CUOTAS, nVAL_CUOTA, nSALDO, dFECHA_INI, dFECHA_FIN,
nINTE_TASA, nMANT_TASA, nDESE_TASA,
nNUM_ZONA, nNUM_RUTA;
IF bContinuar THEN
SET nABONO_I = ( nINTE_TASA / 100 ) * nABONO;
SET nABONO_D = ( nDESE_TASA / 100 ) * nABONO;
SET nABONO_M = ( nMANT_TASA / 100 ) * nABONO;
SET nI_ABONO = nABONO_I + nABONO_D + nABONO_M;
SET nP_ABONO = nABONO - nI_ABONO;
SET nSALDO_F = nSALDO_I - nABONO;
SET nSALDO_F_I = ( nINTE_TASA / 100 ) * nSALDO_F;
SET nSALDO_F_D = ( nDESE_TASA / 100 ) * nSALDO_F;
SET nSALDO_F_M = ( nMANT_TASA / 100 ) * nSALDO_F;
SET nI_SALDO_F = nSALDO_F_I + nSALDO_F_D + nSALDO_F_M;
SET nP_SALDO_F = nSALDO_F - nI_SALDO_F;
INSERT INTO COBROXDIA
( NUM_ZONA, NUM_CIUD, NUM_RUTA, NUM_CLIE, NUM_PRES,
PLAZO, VAL_CUOTA,
FECHA_INI, FECHA_FIN, FECHA,
ABONO, SALDO_I,
ABONO_I, ABONO_D, ABONO_M,
I_ABONO, P_ABONO,
SALDO_F,
SALDO_F_I, SALDO_F_D, SALDO_F_M,
I_SALDO_F, P_SALDO_F )
VALUES
( nNUM_ZONA, nNUM_CIUD, nNUM_RUTA, nNUM_CLIE, nNUM_PRES,
nPLAZO, nVAL_CUOTA,
dFECHA_INI, dFECHA_FIN, dFECHA,
nABONO, nSALDO_I,
nABONO_I, nABONO_D, nABONO_M,
nI_ABONO, nP_ABONO,
nSALDO_F,
nSALDO_F_I, nSALDO_F_D, nSALDO_F_M,
nI_SALDO_F, nP_SALDO_F );
INSERT INTO MOVIMIENTOS
( NUM_PRES, NUM_CLIE, FECHA, HABER, SALDO )
VALUES
( nNUM_PRES, nNUM_CLIE, dFECHA, nABONO, nSALDO - nABONO );
UPDATE PRESTAMOS
SET SALDO=SALDO-nABONO
WHERE NUM_PRES=nNUM_PRES;
END IF;
UNTIL bContinuar=FALSE END REPEAT;
UPDATE COBROXDIAC A
SET A.CERRADO=TRUE
WHERE A.FECHA=dFechaCierre;
COMMIT;
CLOSE cobrodia;
END