我正在尝试创建一个存储过程,但是它总是给我一个错误
我尝试更改定界符中的符号,甚至删除定界符,但似乎无济于事
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“
答案 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