MySQL存储过程,INSERT INTO $ table

问题描述 投票:0回答:1

我正在尝试创建一个存储过程来首先创建一个表,如果该表尚不存在。该部分功能如预期:

    BEGIN
    SET @sql = CONCAT('CREATE TABLE IF NOT EXISTS ',`@variable_table`,' LIKE table_template;');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

创建表后,或者如果表已经存在,我希望存储的程序在其中转储一组数据。

    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',代码将按预期工作。是否可以在此处使用变量运行代码,在这种情况下,我该怎么办?

mysql stored-procedures set sql-insert concat
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.