2016-05-26 62 views
1

我正在努力處理MySQL的case語句。我想在一個過程中使用它,但是我收到一個錯誤(#1064 - 你的SQL語法有錯誤;請查看與您的MariaDB服務器版本相對應的手冊,以獲取在第4行附近使用的正確語法)每次我嘗試創建程序。我儘可能簡化了程序,以避免與案例陳述無關的其他錯誤。這是我目前正在嘗試的:MySQL/MariaDB:無法使用case語句創建一個過程

drop PROCEDURE if EXISTS test; 
create PROCEDURE test() 
BEGIN 
CASE 
when true THEN INSERT INTO testtable VALUES (DEFAULT); 
end case; 
END 

我真的不知道錯誤在哪裏。手冊上說的是這個sytax:

CASE 
    WHEN search_condition THEN statement_list 
    [WHEN search_condition THEN statement_list] ... 
    [ELSE statement_list] 
END CASE 

我覺得我做的完全一樣。 我希望有人能幫助我。我現在掙扎了好幾個小時。 BTW:我使用的XAMPP與phpMyAdmin

+0

用錯誤消息補充您的問題 – M4ks

+0

#1064 - 您的SQL語法錯誤;檢查與你的MariaDB服務器版本相對應的手冊,在第4行 –

回答

0

您需要更改您的分隔符,否則當你的存儲過程結束,如果你從控制檯運行此,而不是程序

內聲明,它不知道:

drop PROCEDURE if EXISTS test; 

delimiter $$ 

create PROCEDURE test() 
BEGIN 
CASE 
when true THEN INSERT INTO testtable VALUES (DEFAULT); 
end case; 
END$$ 

delimiter ; 

如果你正在運行它裏面phpmyadmin的,那麼你就必須指定與他們的GUI的分隔符:

phpmyadmin

+0

附近使用正確的語法。謝謝你的回答,但這不能解決問題。現在我得到這個錯誤: #1064 - 你的SQL語法有錯誤;檢查與您的MariaDB服務器版本相對應的手冊,以便在'create PROCEDURE test() BEGIN CASE '附近使用'正確的語法,然後在第2行 –

+0

@ triple-x-gamer處插入測試表VAL'更改分隔符之前的過程,或者在刪除分隔符時使用自定義分隔符。我編輯了我的答案來演示。 –

+0

@ triple-x-gamer也是因爲您使用的是phpmyadmin,您可能會發現[此答案](http://stackoverflow.com/a/16802061/4233593)有助於設置分隔符。它似乎對我來說工作得很好,但我確實注意到它儘管實際上創建了該過程,但仍在分隔符上拋出了一些錯誤。 –