我正在使用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))
;
答案 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似乎更合理。