2011-05-06 4 views
1

Je commence tout juste à apprendre les fonctions stockées dans mysql. Quelqu'un peut-il s'il vous plaît dites-moi ce qui ne va pas avec ci-dessous? Phpmyadmin dit Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'return NAME; FIN // » à la ligne 19Aide de la fonction stockée Mysql requise

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 // 

Répondre

1

Mettre un point-virgule après 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

ahh, d'accord .. merci beaucoup pour une réponse rapide – suraj

0

vous manque un ;

END CASE 

return NAME; 

devrait être

END CASE; 

return NAME;