在存储过程中传递参数然后以参数为表名创建表的方式有时候非常有用,
这样能够创建表结构相同但表名不同的表,在MySQL中如何实现呢?
以下示例演示了如何通过存储过程中的参数创建表:
CREATE PROCEDURE create_table(IN tb_name VARCHAR(20))
BEGIN
SET @sqlcmd = CONCAT('CREATE TABLE ',tb_name,'(id INT UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20) NULL)');
PREPARE temp FROM sqlcmd;
EXECUTE temp;
DEALLOCATE PREPARE temp;
END;
之后就可以通过存储过程创建表了
CALL create_table('tdb_student');