2011-05-06 94 views
1

我刚刚开始学习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 // 
+0

啊,好的..非常感谢你的回复 – suraj 2011-05-06 10:47:01

0

你缺少一个;

END CASE 

return NAME; 

应该

END CASE; 

return NAME;