mysql存储过程支持用表作为参数吗

mysql存储过程支持用表作为参数。

这个问题在MySQL 5.0以前非常麻烦,但是在MySQL 5.0.13版之后,由于引入了PREPARE语句,一切变得简单了。

例子如下(已验证):

DROP?PROCEDURE?IF?EXISTS?`newtable`;

CREATE?PROCEDURE?`newtable`(IN?tname?varchar(64))

BEGIN

SET?@sqlcmd?=?CONCAT('CREATE?TABLE?',?tname,?'?(id?int?NOT?NULL?AUTO_INCREMENT,?name?varchar(64)?DEFAULT?NULL,?PRIMARY?KEY?(`id`))');

PREPARE?stmt?FROM?@sqlcmd;

EXECUTE?stmt;

DEALLOCATE?PREPARE?stmt;

END;

call?newtable('abc');