简体   繁体   中英

mySQL - If statement giving syntax error

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM