So I have the following query:
IF ( ( SELECT RevisionNumber FROM SchemaVersion ) > 1 ) THEN BEGIN
CREATE TABLE Test ( ID INT );
CREATE TABLE Test2 ( ID INT );
END;
END IF
Basically I want to decide based on a value in my table (SchemaVersion - always has 1 row) whether or not I need to make certain changes.
However, when I use this query I get the following error message:
#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
Any idea why this is erroring / how to fix?
I was just reading another post and apparently BEGIN
/ END
are only allowed within stored procs. Is there any way to get around this (without putting it in a stored proc).
Thanks
The IF
statement is part of what's called Compound-statement Syntax, and it is only available inside stored code, like a trigger, function, or stored procedure.
http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-compound-statements.html
Using IF with brackets calls the IF function
, which is different from IF statement
Note There is also an IF() function, which differs from the IF statement described here. See Section 11.4, “Control Flow Functions”.
I think you would need to run that within a stored procedure. See http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.