Oracle循环中的EXIT、RETURN、CONTINUE解密
有时候编写Oracle中⽤游标等信息去循环处理逻辑的时候,对EXIT、RETURN、CONTINUE很容易搞混淆,⽹上搜了资料也不是很清楚,所以本⼈⾃⼰写了⼀⼩段代码测试了这三种⽤法。案例代码如下:
PROCEDURE P_TASK IS
BEGIN
oracle游标的使用FOR MY_CU IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
FOR MY IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
IF MY_CU.SPBH = 'AAA' THEN
RETURN;
--exit;
--continue;
ELSIF MY.SPBH = 'BBB' THEN
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('123', '123');
ELSE
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('222', '222');
END IF;
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('333', '333');
END LOOP;
END LOOP;
INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('444', '444');
END P_TASK;
案例测试得到结果如下(分析的结果中注意本次循环和本循环的区别。本次循环是本循环执⾏的这次循环):
第⼀种:使⽤RETURN的时候,直接跳出存储过程或者函数
第⼆种:使⽤EXIT的时候,跳出本循环转⽽执⾏本循环的上⼀级循环的下⼀次循环。就此案例⽽⾔MY_CU.SPBH = 'AAA'为真的时候,直接跳出MY循环转⽽去执⾏MY_CU的下⼀次循环
第三种:使⽤CONTINUE的时候,本次循环后⾯的代码部分不再执⾏,转⽽执⾏本循环的下⼀次循环。就此案例⽽⾔MY_CU.SPBH = 'AAA'为真的时候,后⾯的代码不执⾏,继续MY的下⼀次循环