所以我有以下问题:
IF ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
CREATE TABLE Test ( ID INT );
CREATE TABLE Test2 ( ID INT );
END;
END IF
基本上我想基于我的表中的值(SchemaVersion - 总是有1行)来决定是否需要进行某些更改。
但是,当我使用此查询时,我收到以下错误消息:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
CREATE T' at line 1
知道为什么这是错误/如何解决?
我刚刚阅读了另一篇帖子,显然BEGIN
/ END
只能在存储过程中使用。有没有办法绕过这个(没有把它放在存储过程中)。
由于
答案 0 :(得分:9)
IF
语句是所谓的复合语句语法的一部分,它只在存储的代码中可用,如触发器,函数或存储过程。
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-compound-statements.html
答案 1 :(得分:4)
使用带括号的IF会调用IF function
,这与IF statement
注意还有一个IF()函数,它与IF不同 声明在这里描述。请参见第11.4节“控制流功能”。
答案 2 :(得分:1)
我认为您需要在存储过程中运行它。见http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html