解决方案 »

  1.   

    -- 就是一些临时性的工作,要处理一些数据,这是个例子,没测试,可能会有语法上的错误。
    declare 
     m_dwcount int  ; 
    begin
      m_dwcount := 0 ; 
      for x in (select * from tab) loop
        dbms_output.put_line(x.name) ; 
        m_dwcount := m_dwcount + 1 ; 
      end loop ; 
      dbms_output.put_line('共计' || m_dwcount || '个表(视图)对象!') ; 
    end  ;
      

  2.   

    的确是没看仔细,看成匿名块了。命名块, 其实就是一个标识符,可以使用 goto 语句的那种。名字可以随便起,就是 两个尖括号。<<>>
      

  3.   

    create or replace procedure test_YH (test1 in varchar2)
    is
     v_test varchar2(50) :='test';
     v_flg boolean :=true;
    begin
      <<test_name_block>>
      begin 
       dbms_output.put_line(v_test);
       v_flg :=false;
      end;
      begin
        if v_flg then
          goto test_name_block;
        end if;
      end;  
    end test_YH;
    根据楼上的回答,自己试着写了个小例子,好像这种goto语句并不常用,在实际的开发中,也不怎么提倡使用呢。
    不知道还有没有一些比较有意思的非常巧妙的小例子。希望更多的大神指教一下
      

  4.   

    使用goto的话代码的可读性会降低,给后面维护的人带来极大的麻烦,因此不提倡使用
      

  5.   

    版主说的很对
    不过有句话存在就有其合理性,所以想请教一下,有没有很有意思很巧妙的应用例子。
    总有一些情况是不得不用goto 或者不得不用命名块的,想知道是什么样的情况
      

  6.   

    goto可读性差,但是也有优点,他的代码复用率较高
    使用goto的话基本上可以实现不写重复的代码,最大化的复用所写的代码
    他的写法更接近汇编语言,解析的效率应该也会快一点还有就是灵活,特别是程序调整,打补丁的时候,使用goto有时代码会少好多但是咋说呢,优点再多也不好用,可读性差注定他不被提倡
    使用他容易出现一些意想不到的错误,一旦出错,很难找到问题原因,大部分时候只能重写