2015-04-21 85 views
0

我寫了一個功能,但它給了我誤當成第二行(create語句),如果有人可以幫助我,我真的很感激:創建MySQL函數聲明

CREATE FUNCTION GetPrefix (phone_num VARCHAR(30)) RETURNS varchar(30) 

deterministic 
BEGIN 

DECLARE x INT; 
DECLARE prefix varchar(30); 
SET x = 0; 

for prefix in SELECT code 
    FROM tab_len 
while (length(phone_num)) > 0 
    do 
    if prefix<>left(phone_num, length(phone_num)-x) 
     then set x=x+1 ; 
    else return 1 ; 
END while ; 

END $$; 

,我收到此錯誤:

您的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法「中選擇代碼 前綴FROM同時(長度(phone_n tab_len」使用 附近的第9行

+0

好吧,也許你不應該試圖拿出你自己的語法,而是試着在手冊中找到正確的語法。絕對沒有意義,也許你應該描述一下,你試圖做什麼ST – fancyPants

回答

2
DELIMITER $$ 
DROP FUNCTION IF EXISTS GetPrefix $$ 
CREATE FUNCTION GetPrefix 
(
phone_num VARCHAR(30) 
) 
RETURNS varchar(30) 

BEGIN 

DECLARE var_x INT DEFAULT 0; 
DECLARE var_prefix VARCHAR(100); 
SET phone_num = IFNULL(phone_num,''); 

-- your logic will go here. 
return phone_num; 


END$$ 
DELIMITER ; 

SELECT GetPrefix('test'); 

這是正確的語法在mysql中寫一個函數 看看差異吧看看Here