#mysql #stored-procedures #syntax
#mysql #хранимые процедуры #синтаксис
Вопрос:
Я только начинаю изучать хранимые функции в mysql. Может кто-нибудь, пожалуйста, сказать мне, что не так с приведенным ниже?
Phpmyadmin сообщает, что у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘return NAME; END //’ в строке 19
DELIMITER //
DROP FUNCTION IF EXISTS getName //
CREATE FUNCTION getName(type CHAR(10), id int) RETURNS CHAR(50) DETERMINISTIC
BEGIN
DECLARE NAME CHAR(50);
CASE type
WHEN 'offer' THEN
SELECT Type_Name INTO NAME FROM otypes WHERE Type_Id = id;
WHEN 'service' THEN
SELECT ServiceType_Name INTO NAME FROM stypes WHERE ServiceType_Id = id;
WHEN 'store' THEN
SELECT Store_Name INTO NAME FROM stores WHERE Store_Id = id;
END CASE
return NAME;
END //
Ответ №1:
Поставьте точку с запятой после END CASE
:
DELIMITER //
DROP FUNCTION IF EXISTS getName //
CREATE FUNCTION getName(type CHAR(10), id int) RETURNS CHAR(50) DETERMINISTIC
BEGIN
DECLARE NAME CHAR(50);
CASE type
WHEN 'offer' THEN
SELECT Type_Name INTO NAME FROM otypes WHERE Type_Id = id;
WHEN 'service' THEN
SELECT ServiceType_Name INTO NAME FROM stypes WHERE ServiceType_Id = id;
WHEN 'store' THEN
SELECT Store_Name INTO NAME FROM stores WHERE Store_Id = id;
END CASE;
-- ^
return NAME;
END //
Ответ №2:
Вам не хватает ;
END CASE
return NAME;
должно быть
END CASE;
return NAME;