2016-04-23 270 views
0

我修改了下面的語句,但仍然在DECLARE語句中出現錯誤。在mysql語句中使用局部變量IF語句

BEGIN DECLARE searchresult int(11); SET searchresult =(從wbsimsynuqsql選擇count(*),其中SimBase ='a cappella'); IF從simsyn1sql信息搜索結果> 0 THEN 選擇*,其中了baseid =(從wbsimsynuqsql SELECT DISTINCT了baseid其中SimBase = '清唱') ELSE 從simsyn1sql其中了baseid =(選擇從wbsimsynuqsql其中SimSyn ='清唱鮮明瞭baseid選擇* ')

END IF; END

我在PHPMYADMIN中使用下面的表達式,目的是稍後在PHP/MySQL應用程序中使用它。它給出了與第1行中的DECLARE語句有關的錯誤。

我已經看過MySQL中的示例聲明,但沒有看到錯誤,但是我做錯了什麼,希望得到更正/建議。

DECLARE searchresult int(11); 
SET searchresult=(Select count(*) from wbsimsynuqsql where SimBase='a cappella'); 
IF searchresult >0 
{Select * from simsyn1sql where BaseID = (Select Distinct BaseID from wbsimsynuqsql where SimBase='a cappella')} 
[ ELSE 
    {Select * from simsyn1sql where BaseID = (Select Distinct BaseID from wbsimsynuqsql where SimSyn='a cappella')} ] 

END IF; 
+2

'mysql'中沒有'{'和'[']括號。你爲什麼放他們? – Shaharyar

+0

@Shaharyar可能是好運或出於一廂情願。爲什麼他們在沒有人閱讀的時候寫文檔? – tadman

+0

@tadman我把這個諷刺作爲一個學習曲線,發現'''在mysqlm中的用法,但仍然找不到'['。你想分享你的知識嗎? – Shaharyar

回答

1

DECLARE只允許一個內BEGIN ... END複合語句,並且必須是在它的開始,任何其他語句之前。 像裏面CREATE PROCEDURE您可以使用DECLARE

IF聲明缺少THEN

,並去掉方括號([])和花括號({})

如果你的子查詢返回不止你了baseid可能必須使用IN,而不是=

sqlfiddle