Ниже приведена моя хранимая процедура, преобразованная в формат Mysql из MS SQL, но с ошибкой в строке 200. Буду очень признателен, если кто-нибудь из сообщества может помочь
Код ошибки: 1064 У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей MySQL версии сервера, для правильного синтаксиса для использования рядом с '' в строке 218
DELIMITER //
CREATE PROCEDURE ScoringWaled.2 ( p_nroSolicitud INT, p_genero SMALLINT, p_estadoCivil SMALLINT, p_trEdad SMALLINT, p_departamento SMALLINT, p_sitLaboral SMALLINT,
p_trAntigLaboral SMALLINT, p_trIngresos SMALLINT, p_esCliente CHAR(1), p_trAntigCliente SMALLINT,
p_CantOperAnterioresAnt SMALLINT, p_tuvoAtrasosCli CHAR(1), p_tieneBuro CHAR(1), p_tieneProdActivos CHAR(1),
p_tuvoProblemasBuro CHAR(1), p_esFuncionario CHAR(1))
BEGIN
DECLARE v_ptosPerfil DOUBLE DEFAULT 0; DECLARE v_ptosGenero DOUBLE DEFAULT 0; DECLARE v_ptosEstCivil DOUBLE DEFAULT 0; DECLARE v_ptosEdad DOUBLE DEFAULT 0; DECLARE v_ptosDepartamento DOUBLE DEFAULT 0; DECLARE v_ptosSitLaboral DOUBLE DEFAULT 0; DECLARE v_ptosAntigLaboral DOUBLE DEFAULT 0; DECLARE v_ptosIngresos DOUBLE DEFAULT 0;
DECLARE v_ptosVinculacion DOUBLE DEFAULT 0; DECLARE v_ptosEsCliente DOUBLE DEFAULT 0; DECLARE v_ptosAntigCliente DOUBLE DEFAULT 0; DECLARE v_ptosCantOperaciones DOUBLE DEFAULT 0; DECLARE v_ptosTuvoAtrasosCli DOUBLE DEFAULT 0;
DECLARE v_ptosOperacion DOUBLE DEFAULT 0;
DECLARE v_ptosBuro DOUBLE DEFAULT 0; DECLARE v_ptosTieneBuro DOUBLE DEFAULT 0; DECLARE v_ptosTieneProdActivos DOUBLE DEFAULT 0; DECLARE v_ptosTuvoProblemasBuro DOUBLE DEFAULT 0; DECLARE v_ptosEsFuncionario DOUBLE DEFAULT 0;
DECLARE v_ptosScoring DOUBLE DEFAULT 0;
DECLARE v_grupoDepartamento SMALLINT; DECLARE v_salarioMinimo DOUBLE; DECLARE v_ingresos DOUBLE; DECLARE v_relIngSalMin DOUBLE; DECLARE v_trRelIngSalMin DOUBLE;
DECLARE v_techo DOUBLE; DECLARE v_coefSitLaboral DOUBLE; DECLARE v_montoAprobado30 DOUBLE DEFAULT 0; DECLARE v_montoAprobado60 DOUBLE DEFAULT 0; DECLARE v_montoAprobado90 DOUBLE DEFAULT 0; DECLARE v_montoAprobado180 DOUBLE DEFAULT 0;
DECLARE v_ptosOperacion180 DOUBLE;
DECLARE v_ptosOperacion90 DOUBLE;
DECLARE v_ptosOperacion60 DOUBLE;
DECLARE v_ptosOperacion30 DOUBLE;
SET v_ptosOperacion30 = ((30 * 0.70) + (100 * 0.30)) * 0.30;
SET v_ptosOperacion60 = ((50 * 0.70) + (100 * 0.30)) * 0.30;
SET v_ptosOperacion90 = ((70 * 0.70) + (100 * 0.30)) * 0.30;
SET v_ptosOperacion180 = ((100 * 0.70) + (100 * 0.30)) * 0.30;
CALL ScoringWaled.2Puntaje( 'Genero', v_genero, '', v_ptosGenero);
CALL ScoringWaled.2Puntaje( 'EstadoCivil', v_estadoCivil, '', v_ptosEstCivil);
CALL ScoringWaled.2Puntaje( 'Edad', v_trEdad, '', v_ptosEdad);
SET v_grupoDepartamento =
CASE WHEN p_departamento = 1 THEN 1
WHEN p_departamento IN(2, 3, 4, 5, 6, 7) THEN 2
WHEN p_departamento IN(8, 9, 10, 11, 12, 13, 14, 15, 16, 17) THEN 3
ELSE 3
END;
CALL ScoringWaled.2Puntaje( 'Departamento', v_grupoDepartamento, '', v_ptosDepartamento);
CALL ScoringWaled.2Puntaje( 'SitLaboral', v_sitLaboral, '', v_ptosSitLaboral);
CALL ScoringWaled.2Puntaje( 'AntigLaboral', v_trAntigLaboral, '', v_ptosAntigLaboral);
SET v_ingresos =
CASE WHEN p_trIngresos = 1 THEN 750000
WHEN p_trIngresos = 2 THEN 1500000
WHEN p_trIngresos = 3 THEN 2250000
WHEN p_trIngresos = 4 THEN 3000000
WHEN p_trIngresos = 5 THEN 3750000
WHEN p_trIngresos = 6 THEN 4500000
WHEN p_trIngresos = 7 THEN 8000000
END;
SET v_salarioMinimo = 2000000;
SET v_relIngSalMin = v_ingresos / v_salarioMinimo ;
SET v_trRelIngSalMin =
CASE WHEN v_relIngSalMin > 0 AND v_relIngSalMin < 0.75 THEN 1
WHEN v_relIngSalMin >= 0.75 AND v_relIngSalMin < 1.5 THEN 2
WHEN v_relIngSalMin >= 1.5 AND v_relIngSalMin < 2 THEN 3
WHEN v_relIngSalMin >= 2 AND v_relIngSalMin < 4 THEN 4
WHEN v_relIngSalMin >= 4 THEN 5
END;
CALL ScoringWaled.2Puntaje( 'Ingresos', v_trRelIngSalMin, '', v_ptosIngresos);
CALL ScoringWaled.2Puntaje( 'EsCliente', 0, v_esCliente, v_ptosEsCliente);
IF p_esCliente = 'S' THEN
CALL ScoringWaled.2Puntaje( 'AntigCliente', v_trAntigCliente, '', v_ptosAntigCliente);
END IF;
IF p_esCliente = 'S' THEN
CALL ScoringWaled.2Puntaje( 'CantOperaciones', v_CantOperAnterioresAnt, '', v_ptosCantOperaciones);
END IF;
IF p_esCliente = 'S' THEN
CALL ScoringWaled.2Puntaje( 'TuvoAtrasosCli', 0, v_tuvoAtrasosCli, v_ptosTuvoAtrasosCli);
END IF;
CALL ScoringWaled.2Puntaje( 'TieneBuro', 0, v_tieneBuro, v_ptosTieneBuro);
IF p_tieneBuro = 'S' THEN
CALL ScoringWaled.2Puntaje( 'TieneProdActivos', 0, v_tieneProdActivos, v_ptosTieneProdActivos);
END IF;
IF p_tieneBuro = 'S' THEN
CALL ScoringWaled.2Puntaje( 'TuvoProblemasBuro', 0, v_tuvoProblemasBuro, v_ptosTuvoProblemasBuro);
END IF;
IF p_tieneBuro = 'S' THEN
CALL ScoringWaled.2Puntaje( 'EsFuncionario', 0, v_esFuncionario, v_ptosEsFuncionario);
END IF;
IF p_sitLaboral = 1 THEN
CALL ScoringWaled.2Puntaje( 'CoefSitLaboralEmpleado', v_CantOperAnterioresAnt, '', v_coefSitLaboral);
ELSE
CALL ScoringWaled.2Puntaje( 'CoefSitLaboralAutonomo', v_CantOperAnterioresAnt, '', v_coefSitLaboral);
CREATE TEMPORARY TABLE techos (tNivel CHAR(1), tPtosScorDesde SMALLINT, tPtosScorHasta SMALLINT, tTecho DOUBLE);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES ('A', 70, 100, 2000000);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES('B', 65, 70, 1500000);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES('C', 60, 65, 1000000);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES('D', 50, 60, 650000);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES('E', 40, 50, 300000);
INSERT INTO techos (`tNivel`,`tPtosScorDesde`,`tPtosScorHasta`,`tTecho`) VALUES('F', 0, 40, 0);
SET v_ptosPerfil = 0.25 * (v_ptosGenero + v_ptosEstCivil + v_ptosEdad + v_ptosDepartamento + v_ptosSitLaboral + v_ptosAntigLaboral + v_ptosIngresos);
SET v_ptosVinculacion = 0.15 * (v_ptosEsCliente + v_ptosAntigCliente + v_ptosCantOperaciones + v_ptosTuvoAtrasosCli);
SET v_ptosOperacion = 0.30 * 0;
SET v_ptosBuro = 0.30 * (v_ptosTieneBuro + v_ptosTieneProdActivos + v_ptosTuvoProblemasBuro + v_ptosEsFuncionario);
SET v_ptosScoring = v_ptosPerfil + v_ptosVinculacion + v_ptosOperacion + v_ptosBuro;
IF v_ptosOperacion = 0 -- El scoring recomienda monto
THEN
SELECT MAX(tTecho) INTO v_techo FROM techos WHERE (v_ptosScoring + v_ptosOperacion30) > tPtosScorDesde AND (v_ptosScoring + v_ptosOperacion30) <= tPtosScorHasta;
IF v_techo > 0
THEN
IF v_techo < (v_ingresos * v_coefSitLaboral) THEN
SET v_montoAprobado30 = v_techo;
ELSE
SET v_montoAprobado30 = v_ingresos * v_coefSitLaboral;
END IF;
END IF;
SELECT MAX(tTecho) INTO v_techo FROM techos WHERE (v_ptosScoring + v_ptosOperacion60) > tPtosScorDesde AND (v_ptosScoring + v_ptosOperacion60) <= tPtosScorHasta;
IF v_techo > 0
THEN
IF v_techo < (v_ingresos * v_coefSitLaboral) THEN
SET v_montoAprobado60 = v_techo;
ELSE
SET v_montoAprobado60 = v_ingresos * v_coefSitLaboral;
END IF;
END IF;
SELECT MAX(tTecho) INTO v_techo FROM techos WHERE
(v_ptosScoring + v_ptosOperacion90) > tPtosScorDesde AND (v_ptosScoring + v_ptosOperacion90) <= tPtosScorHasta;
IF v_techo > 0
THEN
IF v_techo < (v_ingresos * v_coefSitLaboral) THEN
SET v_montoAprobado90 = v_techo;
ELSE
SET v_montoAprobado90 = v_ingresos * v_coefSitLaboral;
END IF;
END IF;
SELECT MAX(tTecho) INTO v_techo FROM techos WHERE (v_ptosScoring + v_ptosOperacion180) > tPtosScorDesde AND
(v_ptosScoring + v_ptosOperacion180) <= tPtosScorHasta;
IF v_techo > 0
THEN
IF v_techo < (v_ingresos * v_coefSitLaboral) THEN
SET v_montoAprobado180 = v_techo;
ELSE
SET v_montoAprobado180 = v_ingresos * v_coefSitLaboral;
END IF;
END IF;
END IF;
SELECT v_montoAprobado30 MontoAprobado30, v_montoAprobado60 MontoAprobado60,
v_montoAprobado90 MontoAprobado90, v_montoAprobado180 MontoAprobado180 ;
END;
//
DELIMITER ;