MySQL 存储过程,游标双重循环

-- 等价于JAVA双重for循环
CREATE DEFINER=`root`@`%` PROCEDURE `ref_view_rp_jk_day_1`(IN time VARCHAR(20))
BEGIN

DECLARE ename VARCHAR(100);
DECLARE starttime VARCHAR(100);
DECLARE  endtime  VARCHAR(100);

DECLARE  standardele  DOUBLE;

DECLARE  id BIGINT(10);
SET starttime=NOW();

DECLARE sdostep VARCHAR(255);
DECLARE sfcode INT;
DECLARE sdeptid BIGINT;
DECLARE stask VARCHAR(255);

DECLARE row_deptid BIGINT;
DECLARE row_fcode INT;
DECLARE row_startime VARCHAR(20);
DECLARE row_endtime VARCHAR(20);
DECLARE row_tenantid BIGINT;

DECLARE row_sys VARCHAR(50);
DECLARE row_reason VARCHAR(255);
DECLARE row_area VARCHAR(50);
DECLARE row_deptname VARCHAR(50);
DECLARE row_gztype VARCHAR(50);
DECLARE done INT;

DECLARE edone INT;

BEGIN
-- 定义游标
DECLARE rs_cursor CURSOR FOR
-- 外取数据的源
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

OPEN rs_cursor; 
cursor_loop:LOOP
FETCH rs_cursor INTO row_deptid,row_fcode,row_startime,row_endtime,row_tenantid,row_sys,row_reason,row_area,row_deptname,row_gztype; -- 取数据
IF done=1 THEN
		leave cursor_loop;-- 跳出循环
ELSE
		SET edone = 0;-- 重置标识
			IF THEN

				BEGIN
					-- 定义游标
					DECLARE rs_cursor1 CURSOR FOR
					-- 内取数据的源
					DECLARE CONTINUE HANDLER FOR NOT FOUND SET edone=1;

					OPEN rs_cursor1;
					cursor_loop1:LOOP
					FETCH rs_cursor1 INTO sfcode,sdostep,sdeptid,stask; -- 取数据
					IF edone=1 THEN
						leave cursor_loop1;
					ELSE
						IF  THEN
							
						END IF;
					END IF;
					END LOOP cursor_loop1;
					-- 内层for循环外操作
					IF  THEN

					END IF;
					
					CLOSE rs_cursor1;
				END;
			END IF;
		END IF;
		END LOOP cursor_loop;
		CLOSE rs_cursor;

	END;

SET endtime=NOW();
SET ename='rp_jk_day';
INSERT INTO view_records_event(ename,starttime,endtime) VALUES(ename,starttime,endtime);

END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值