Hola Esta es la primera vez que me atrevo a hacer una pregunta, pero he investigado mucho sobre los problemas que tengo pero no logro solucionarlo así que espero alguno de ustedes me puedan ayudar...
Bueno entrando en materia tengo un procedimiento almacenado que recibe 5 parámetros de entrada.
Código SQL:
Ver originalUSE 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 originalUSE 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 originalCALL 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