转Oracle 中的GOTO,RETURN,EXIT

来源:互联网 发布:炒股书籍推荐 知乎 编辑:程序博客网 时间:2024/06/04 18:36
 

1.GOTO,主要用于跳转,但会打乱我们的程序逻辑,一般不使用,它可以实现RETURN,EXIT的功能

2.RETURN,返回程序末尾,结束程序

3.EXIT,主要用于退出当前循环,相当于java中的break.

4.要实现java中continue的功能可以使用自定义异常的方式

它们之间的比较

5 null 每个块必须要有语句
如果什么都不写,就写个null,使编译通过


--这里的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;   
/ 


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-04/34479.htm

原创粉丝点击