«DELIMITER» - это директива клиента, а не команда, которую клиент передает серверу. Этот вопрос указывает, что ошибка, которую вы видите, может быть вызвана использованием клиента, который не распознает «DELIMITER».
Кроме того, следующая синтаксическая ошибка MySQL покажет, что аргументам необходим тип переменной:
CREATE PROCEDURE 'check_values'(IN Autoridad VARCHAR, IN TipoVehiculo VARCHAR)
Наконец, вы можете пересмотреть логику в ваших IF
утверждениях. Как написано, они всегда будут верны, и процедура всегда будет SIGNAL SQLSTATE '45000'
. Например, если Autoridad == 'Fiscalia', тогда термин Autoridad <> 'Transito'
будет истинным, что означает, что в сочетании с 'ИЛИ', как и вы, весь предикат является истинным. Обычно то, что вы пытаетесь сделать, закодировано как
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