Bueno entrando en materia tengo un procedimiento almacenado que recibe 5 parámetros de entrada.
Código SQL:
Ver original
USE fgaintegrado; DROP PROCEDURE IF EXISTS TotalSiniestralidad; DELIMITER // CREATE PROCEDURE TotalSiniestralidad(IN nit_inter VARCHAR (25), IN convenio INT(4), IN movilizado INT(255), IN ingreso INT(255), IN porc_siniestralidad DOUBLE) BEGIN DECLARE b_siniestralidad VARCHAR(1); DECLARE total_siniestralidad INT(255); SELECT base_siniestralidad INTO b_siniestralidad FROM convenios WHERE codigo_convenio = convenio COLLATE latin1_spanish_ci AND nit_intermediario = nit_inter COLLATE latin1_spanish_ci; IF(b_siniestralidad = 'M') SET @total_siniestralidad = (movilizado * porc_siniestralidad); ELSE SET @total_siniestralidad = (ingreso * porc_siniestralidad); END IF; SELECT @total_siniestralidad; END; //DELIMITER
El primer Problema que tengo es que no me corre por que aparece que tengo un error ([Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near) en la linea 13 y la verdad yo no encuentro el error...
Bueno el siguiente error que encontré un poco mas especifico, me di cuenta al probar cada una de las entradas que el procedimiento me esta cambiando el valor del parámetro de entrada movilizado en algunos casos por el numero 2147483647.
Procedimiento de prueba:
Código SQL:
Ver original
USE fgaintegrado; DROP PROCEDURE IF EXISTS TotalSiniestralidad; DELIMITER // CREATE PROCEDURE TotalSiniestralidad(IN nit_inter VARCHAR (25), IN convenio INT(4), IN movilizado INT(255), IN ingreso INT(255), IN porc_siniestralidad DOUBLE ) BEGIN SELECT movilizado; END; //DELIMITER
y el llamado de prueba es este:
Código SQL:
Ver original
CALL TotalSiniestralidad('890300279', 1, 12373239017, 375660201, '1.5');
Y el result set es: 2147483647
No se por que estará pasando esto....
Agradezco de ante mano su colaboración