分享

Orcle中的goto,exit,return

 aaie_ 2011-09-08
1.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用,它可以实现RETURN,EXIT的功能
2.RETURN,返回程序末尾,结束程序
3.EXIT,主要用于退出当前循环,相当于java中的break.
4.要实现java中continue的功能可以使用自定义异常的方式
它们之间的比较
 
1.--这里的GOTO相当于下面的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.--下面相当于上面的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. 
自定义异常的方式实现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./ 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多