1.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用,它可以实现RETURN,EXIT的功能
2.RETURN,返回程序末尾,结束程序
3.EXIT,主要用于退出当前循环,相当于java中的break.
4.要实现java中continue的功能可以使用自定义异常的方式
它们之间的比较:
--这里的GOTO相当于下面的EXIT用法 BEGIN FOR i IN 1..2 LOOP IF i=2 THEN GOTO label; END IF; dbms_output.put_line('i='||i); END LOOP; <<label>> dbms_output.put_line('the last...'); END; / i=1 the last... PL/SQL procedure successfully completed. BEGIN FOR i IN 1..2 LOOP IF i=2 THEN --GOTO label; EXIT; END IF; dbms_output.put_line('i='||i); END LOOP; <<label>> dbms_output.put_line('the last...'); END; / i=1 the last... PL/SQL procedure successfully completed. BEGIN FOR i IN 1..2 LOOP IF i=2 THEN --GOTO label; --EXIT; RETURN; END IF; dbms_output.put_line('i='||i); END LOOP; <<label>> dbms_output.put_line('the last...'); END; / i=1 PL/SQL procedure successfully completed. --下面相当于上面的RETURN BEGIN FOR i IN 1..2 LOOP IF i=2 THEN GOTO label; --EXIT; --RETURN; END IF; dbms_output.put_line('i='||i); END LOOP; dbms_output.put_line('the last...'); <<label>> NULL;--这个NULL不能省略,<<label>>不能在END;END LOOP;等之前 END; / i=1 PL/SQL procedure successfully completed.
自定义异常的方式实现continue的功能
DECLARE e_My_Exception EXCEPTION; --PRAGMA EXCEPTION_INIT (e_My_Exception, -1401); BEGIN FOR i IN 1..2 LOOP BEGIN IF i=2 THEN RAISE e_My_Exception; END IF; dbms_output.put_line('i='||i); EXCEPTION WHEN e_My_Exception THEN NULL; END; END LOOP; dbms_output.put_line('the last...'); END; /
来源:http://www.cnblogs.com/lynnwang/p/4398592.html