1.GOTO,主要用于跳轉(zhuǎn),但會打亂我們的程序邏輯,一般不使用,它可以實現(xiàn)RETURN,EXIT的功能
2.RETURN,返回程序末尾,結(jié)束程序
3.EXIT,主要用于退出當(dāng)前循環(huán),相當(dāng)于java中的break.
4.要實現(xiàn)java中continue的功能可以使用自定義異常的方式
它們之間的比較
1.--這里的GOTO相當(dāng)于下面的EXIT用法
2.BEGIN 3. FOR i IN 1..2 LOOP 2. IF i=2 THEN 2. GOTO label; 3. END IF; 4. dbms_output.put_line('i='||i); 5. 6. END LOOP; 7. <<label>> 8. dbms_output.put_line('the last...'); 9.END; 10./ 11.i=1 12.the last... 13.PL/SQL procedure successfully completed. 14.BEGIN 15. FOR i IN 1..2 LOOP 16. IF i=2 THEN 17. --GOTO label; 18. EXIT; 19. END IF; 20. dbms_output.put_line('i='||i); 21. 22. END LOOP; 23. <<label>> 24. dbms_output.put_line('the last...'); 25.END; 26./ 27.i=1 28.the last... 29.PL/SQL procedure successfully completed. 30.BEGIN 31. FOR i IN 1..2 LOOP 32. IF i=2 THEN 33. --GOTO label; 34. --EXIT; 35. RETURN; 36. END IF; 37. dbms_output.put_line('i='||i); 38. END LOOP; 39. <<label>> 40. dbms_output.put_line('the last...'); 41.END; 42./ 43.i=1 44.PL/SQL procedure successfully completed. 45.--下面相當(dāng)于上面的RETURN 46.BEGIN 47. FOR i IN 1..2 LOOP 48. IF i=2 THEN 49. GOTO label; 50. --EXIT; 51. --RETURN; 52. END IF; 53. dbms_output.put_line('i='||i); 54. END LOOP; 55. dbms_output.put_line('the last...'); 56. <<label>> 57. NULL;--這個NULL不能省略,<<label>>不能在END;END LOOP;等之前 58.END; 59./ 60.i=1 61.PL/SQL procedure successfully completed. 自定義異常的方式實現(xiàn)continue的功能
1.DECLARE 2. e_My_Exception EXCEPTION; 3. --PRAGMA EXCEPTION_INIT (e_My_Exception, -1401); 2.BEGIN 3. FOR i IN 1..2 LOOP 2. BEGIN 3. IF i=2 THEN 4. RAISE e_My_Exception; 5. END IF; 6. dbms_output.put_line('i='||i); 7. EXCEPTION 8. WHEN e_My_Exception THEN 9. NULL; 10. END; 11. END LOOP; 12. dbms_output.put_line('the last...'); 13.END; 14./ |
|