Mysql хранимая функция нужна помощь - PullRequest
1 голос
/ 06 мая 2011

Я только начинаю изучать хранимые функции в 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 //

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Поставьте точку с запятой после 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 //
0 голосов
/ 06 мая 2011

Вам не хватает ;

END CASE

return NAME;

должно быть

END CASE;

return NAME;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...