【发布时间】:2020-06-07 09:35:27
【问题描述】:
我正在尝试创建一个存储过程来首先创建一个表,如果它不存在的话。这部分功能符合预期:
BEGIN
SET @sql = CONCAT('CREATE TABLE IF NOT EXISTS ',`@variable_table`,' LIKE table_template;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
创建表后,或者如果表已经存在,我希望存储的 proseadure 转储其中的一组数据。
SET @sql = CONCAT('INSERT INTO ',`@variable_table`,' (
`col1`,`col2`,`col3`,`col4`,`col5`)
VALUES (
`@D1`,`@D2`,`@D3`,`@D4`,`@D5`);');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
如果我将 ',@variable_table,' 与 existing_table_name 交换,代码将按预期工作。
是否可以在这里使用变量运行代码,在这种情况下,我该怎么做?
【问题讨论】:
-
您忘记提及现有代码所面临的问题。
-
@stickybit 对不起,它返回了一条语法错误消息并要求我检查文档。
-
Edit 问题并将该消息包含为文本,没有屏幕截图。
标签: mysql stored-procedures set sql-insert concat