Mysql存储过程动态建表
1.创建存储过程SQL:
DELIMITER $
CREATE PROCEDURE p_create_table (
IN pa_table_name VARCHAR (30) # 表名
)
BEGIN
# 利用concat拼接字符串函数,将复制表的sql赋值到变量sql_create_table
set @sql_create_table = concat('CREATE TABLE ',pa_table_name," SELECT * FROM t_test_basic WHERE 1=2;");
# 预处理建表
PREPARE sql_create_table FROM @sql_create_table;
# 执行sql
EXECUTE sql_create_table;
END $
2.说明:
我这里创建了一个名为 p_create_table
的存储过程,然后利用 concat的函数,拼接复制表的sql,入参 pa_table_name
是动态建表的表名。
3.使用:
CALL p_create_table ("t_test_copy_good") # 调用存储过程复制表t_test_basic的表结构