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;
- /