无法使我的存储过程在MySQL中工作

时间:2019-06-18 00:30:29

标签: mysql xampp

我正在尝试创建一个存储过程,但是它总是给我一个错误

我尝试更改定界符中的符号,甚至删除定界符,但似乎无济于事

DELIMITER //
CREATE PROCEDURE`check_values`(IN Autoridad, IN TipoVehiculo)
BEGIN
    IF((Autoridad <> 'Transito') OR (Autoridad <> 'Fiscalia')  OR (Autoridad <> 'Pol_Car') OR (Autoridad <> 'Juzgado')) THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Autoridad no valida';
    END IF;
    IF((TipoVehiculo <> 'Automovil') OR (TipoVehiculo <> 'Bicicleta') OR (TipoVehiculo <> 'Bus') OR (TipoVehiculo <> 'Buseta') OR (TipoVehiculo <> 'Camion') OR (TipoVehiculo <> 'Camioneta') OR (TipoVehiculo <> 'Ciclomotor') OR (TipoVehiculo <> 'Furgoneta')OR (TipoVehiculo <> 'Moto') OR (TipoVehiculo <> 'Motocarro') OR (TipoVehiculo <> 'Motocultor') OR (TipoVehiculo <> 'Tractocamion') OR (TipoVehiculo <> 'Tractocarro') OR (TipoVehiculo <> 'Trolebus') OR (TipoVehiculo <> 'Volqueta')) THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Tipo de vehiculo no valido';
    END IF;  
END;//
DELIMITER;

它在第1行中返回错误:“您的SQL语法有错误;似乎该错误在周围:'DELIMITER //创建过程check_values(在Autoridad,在TipoVehiculo中)在行' 1“

1 个答案:

答案 0 :(得分:0)

“ DELIMITER”是一个客户端指令,而不是客户端传递给服务器的命令。 This question表示您看到的错误可能是由于使用无法识别“ DELIMITER”的客户端引起的。

此外,MySQL将显示的下一个语法错误是参数需要变量类型:

CREATE PROCEDURE 'check_values'(IN Autoridad VARCHAR, IN TipoVehiculo VARCHAR)

最后,您可能希望查看IF语句中的逻辑。按照书面规定,它们将始终为真,过程将始终为SIGNAL SQLSTATE '45000'。例如,如果Autoridad =='Fiscalia',则术语Autoridad <> 'Transito'将为True,这意味着,当您与'OR'结合使用时,整个谓词为true。通常,您似乎要尝试的代码都被编码为

IF((Autoridad <> 'Transito') AND (Autoridad <> 'Fiscalia') AND (Autoridad <> 'Pol_Car') AND (Autoridad <> 'Juzgado')) THEN

或同样有效

IF NOT ((Autoridad == 'Transito') OR (Autoridad = 'Fiscalia')  OR (Autoridad == 'Pol_Car') OR (Autoridad == 'Juzgado')) THEN