在mysql IF语句中使用局部变量

时间:2016-04-23 22:57:04

标签: mysql declaration

我修改了如下语句,但仍然在DECLARE语句的行中出错。

BEGIN DECLARE searchresult int(11); SET searchresult =(从wbsimsynuqsql中选择count(*),其中SimBase =' a cappella'); 如果搜索结果> 0那么  从simsyn1sql中选择*,其中BaseID =(从wbsimsynuqsql中选择Distinct BaseID,其中SimBase ='无伴奏合唱') 其他    从simsyn1sql中选择*,其中BaseID =(从wbsimsynuqsql选择Distinct BaseID,其中SimSyn ='无伴奏合唱')

结束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;

1 个答案:

答案 0 :(得分:2)

DECLARE 仅允许在 BEGIN ... END 复合语句中使用,并且必须在其开始之前,在任何其他语句之前。 比如在CREATE PROCEDURE中你可以使用DECLARE

您的 IF 语句缺少那么

并删除方括号([])和花括号({})

如果您的子查询返回多个BaseID,则可能必须使用IN而不是=

sqlfiddle