存储过程使用示例
原创2017/5/27大约 1 分钟
存储过程使用示例
1、示例说明
该存储过程示例实现了:接收一个表名的参数,进行复制其他表结构(不复制数据),然后设置主键及自增的功能。
2、SQL脚本
DROP PROCEDURE IF EXISTS `proc_createhistable`;
DELIMITER ;;
CREATE DEFINER = CURRENT_USER PROCEDURE `proc_createhistable`(tname VARCHAR(50))
BEGIN
/*定义变量,不定义也行*/
DECLARE `@str_create` VARCHAR(100);
DECLARE `@str_alter` VARCHAR(100);
DECLARE `@str_auto_inc` VARCHAR(100);
/*设置变量值*/
SET @str_create = CONCAT("CREATE TABLE ",tname," AS SELECT * FROM t_hisdata WHERE 1<>1");
SET @str_alter =CONCAT("ALTER TABLE ",tname," ADD PRIMARY KEY(id)");
SET @str_auto_inc =CONCAT("ALTER TABLE ",tname," MODIFY id INTEGER auto_increment");
/*准备执行语句*/
PREPARE a FROM @str_create;
PREPARE b FROM @str_alter;
PREPARE c FROM @str_auto_inc;
/*执行*/
EXECUTE a;
EXECUTE b;
EXECUTE c;
END
;;
DELIMITER ;
/*调用该存储过程*/
CALL proc_createhistable("t_wzjtest")3、注意事项
- 定义变量时,最好用
@定义,表示用户变量;否则是系统变量,容易发生混乱。 - 定义变量时,最好都加上反引号,否则会报错(亲测经验)
- 使用系统函数之前先用命令
show variables like '%func%';看一下全局函数变量log_bin_trust_function_creators是否打开;若显示OFF,则使用命令set global log_bin_trust_function_creators=1;设置为ON即可。

