1.存储实例:
delimiter $$
drop PROCEDURE if EXISTS create_log;
CREATE PROCEDURE create_log()
BEGIN
-- 定义变量
DECLARE tableName VARCHAR(300);
DECLARE lp_flag boolean DEFAULT TRUE;
-- 定义一个游标
DECLARE group_list CURSOR FOR
SELECT CONCAT('sg_event_track_log_',group_id) table_names from sg_group WHERE state=1 union all SELECT 'sg_event_track_log';
DECLARE CONTINUE HANDLER FOR 1329 SET lp_flag=FALSE;
-- 打开
open group_list;
group_loop:LOOP
-- 循环获取
FETCH group_list INTO tableName;
IF lp_flag THEN
SET @STMT :=CONCAT("alter table `",tableName,"` add material_type int DEFAULT NULL COMMENT '素材类型:1图片类型 2视频类型 5附码图片';");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
ELSE LEAVE group_loop;
END IF;
END loop group_loop;
-- 关闭
CLOSE group_list;
END$$
CALL create_log();
drop PROCEDURE if EXISTS create_log;
2.分析步骤
2.1:首先创建方法和存储体
CREATE PROCEDURE create_log() //方法名
//方法体
BEGIN
END
2.2:定义变量 //采用DECLARE定义变量,类型放在最后,可以设置默认值,也可以不设置默认值
DECLARE tableName VARCHAR(300);
DECLARE lp_flag boolean DEFAULT TRUE;
2.3:定义游标循环取查询出的内容;
1.DECLARE group_list CURSOR FOR 加sql语句
2.open group_list;//打开
3.FETCH group_list INTO 自定义变量名;//循环拿去查询的结果数据
4. CLOSE group_list;//关闭
2.4:定义拿不到数据产生的bug变量
DECLARE CONTINUE HANDLER FOR 1329 SET lp_flag=FALSE;
2.5:定义循环:
group_loop:LOOP
END loop group_loop;
2.4:定义if判断:
IF lp_flag THEN 代码 //如果为true执行业务;
ELSE LEAVE group_loop;//或者跳出循环;
END IF;
文章来源:智云一二三科技
文章标题:java总结:3.写存储过程中的语法和步骤
文章地址:https://www.zhihuclub.com/196326.shtml