|
1.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用,它可以实现RETURN,EXIT的功能
2.RETURN,返回程序末尾,结束程序
3.EXIT,主要用于退出当前循环,相当于java中的break.
4.要实现java中continue的功能可以使用自定义异常的方式
它们之间的比较
--这里的GOTO相当于下面的EXIT用法BEGINFOR i IN 1..2 LOOPIF i=2 THENGOTO label;END IF;dbms_output.put_line('i='||i);END LOOP;<<label>>dbms_output.put_line('the last...');END;/i=1the last...PL/SQL procedure successfully completed.BEGINFOR i IN 1..2 LOOPIF 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=1the last...PL/SQL procedure successfully completed.BEGINFOR i IN 1..2 LOOPIF 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=1PL/SQL procedure successfully completed.--下面相当于上面的RETURNBEGINFOR i IN 1..2 LOOPIF i=2 THENGOTO 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=1PL/SQL procedure successfully completed.
自定义异常的方式实现continue的功能
DECLAREe_My_Exception EXCEPTION;--PRAGMA EXCEPTION_INIT (e_My_Exception, -1401);BEGINFOR i IN 1..2 LOOPBEGINIF i=2 THENRAISE e_My_Exception;END IF;dbms_output.put_line('i='||i);EXCEPTIONWHEN e_My_Exception THENNULL;END;END LOOP;dbms_output.put_line('the last...');END;/
|
|
|