如何在 Mysql If 子句中使用用户变量?
How do you use user variables in Mysql If clause?
我想更改 table 并向其添加一列(如果它尚不存在)。所以我填充了一个变量@row,如果它是我想要改变的。
SET @row = (SELECT count(*) FROM information_schema.COLUMNS WHERE TABLE_NAME='tblname' AND COLUMN_NAME='colname' and table_schema='dbname');
IF(@row <1) THEN
ALTER TABLE tblname ADD colname INT;
END IF;
但是我遇到语法错误
#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(@row <1) THEN ALTER TABLE tblname ADD colname INT' at line 1
我做错了什么?
在 MySQL 中,您需要 shell 围绕流程语句,例如 if
。
围绕它设置一个程序,它将起作用。
您可以使用prepared statements
IF (@row <1) THEN
SET @lSQL = "ALTER TABLE tblname ADD colname INT";
PREPARE stmt FROM @lSQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
希望对您有所帮助。
我想更改 table 并向其添加一列(如果它尚不存在)。所以我填充了一个变量@row,如果它是我想要改变的。
SET @row = (SELECT count(*) FROM information_schema.COLUMNS WHERE TABLE_NAME='tblname' AND COLUMN_NAME='colname' and table_schema='dbname');
IF(@row <1) THEN
ALTER TABLE tblname ADD colname INT;
END IF;
但是我遇到语法错误
#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(@row <1) THEN ALTER TABLE tblname ADD colname INT' at line 1
我做错了什么?
在 MySQL 中,您需要 shell 围绕流程语句,例如 if
。
围绕它设置一个程序,它将起作用。
您可以使用prepared statements
IF (@row <1) THEN
SET @lSQL = "ALTER TABLE tblname ADD colname INT";
PREPARE stmt FROM @lSQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
希望对您有所帮助。