存储过程,根据给定的参数创建表

时间:2018-04-22 01:44:24

标签: sql mariadb

我正在使用MariaDB并且我正在尝试创建接受两个参数的过程,表名为t char(20),主键为p char(20),并从中创建表。但是,当我调用我的程序时,它会创建表t而不是值t保持。我对SQL很新,所以如果这很简单,我很抱歉。

这是我的代码:

Create Procedure createTable(IN t char(20), IN d char(20)) 
    create table t(d char(20))
;  

1 个答案:

答案 0 :(得分:2)

您需要使用动态SQL:

delimiter $$

Create Procedure createTable (
    IN in_t varchar(20),
    IN in_d varchar(20)
) 
begin
    set @sql = 'create table [t] ([d] char(20))';

    set @sql = replace(replace(@sql, '[d]', in_d), '[t]', in_t);

    prepare stmt from @sql;

    execute stmt;
end;

delimiter ;

顺便说一句,我永远不会让id成为一个字符串。自动增量ID似乎更合理。