这个问题在这里已经有答案了:
如果mysql表不存在,则将列添加到该表(16个答案)
两年前关门了。
当我在mysql5.7上运行这个程序时,我总是会遇到一个错误。我基本上只想添加一个列,如果这个列不存在的话
DROP PROCEDURE IF EXISTS ALIASCOLUMN;
DELIMITER //
CREATE PROCEDURE ALIASCOLUMN()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
ALTER TABLE 'human_api_procedure' ADD COLUMN 'alias' varchar(255);
END //
DELIMITER;
CALL ALIASCOLUMN();
DROP PROCEDURE ALIASCOLUMN;
2条答案
按热度按时间8ehkhllq1#
过程中的ddl语句必须作为动态sql执行(我想那是真的,我需要检查文件来证实。)
此外,标识符(表名、列名)不应该用单引号括起来。单引号是字符串文字的分隔符。
我希望此语句失败并出现语法错误:
这个
还是这个
将是有效的语法。如果在sql\u模式中包含ansi\u引号,我们还可以在标识符周围使用双引号。
执行命令
ALTER TABLE
在mysql存储程序的上下文中,我们可以这样做:mysql允许例程包含ddl语句,比如create和drop。
https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html
上面演示的模式,使用prepare/execute/deallocate将允许执行for动态sql,而不仅仅是静态sql文本。
yyyllmsg2#
在存储过程中使用以下命令:
检查此链接。它可能会帮助你。:)