命名块的使用例

qianghe1314 2014-12-22 12:02:38
PL/SQL中命名块在实际运用中可以怎么使用?能给个使用例吗?
它和匿名块除了表面上有无名字的区别之外,还有什么其他不同么?比如说在存储上
它的名字能有什么好处呢?还是单纯只起到类似注释的作用呢?
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2014-12-23
  • 打赏
  • 举报
回复
使用goto的话代码的可读性会降低,给后面维护的人带来极大的麻烦,因此不提倡使用
qianghe1314 2014-12-23
  • 打赏
  • 举报
回复
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语句并不常用,在实际的开发中,也不怎么提倡使用呢。 不知道还有没有一些比较有意思的非常巧妙的小例子。希望更多的大神指教一下
qianghe1314 2014-12-23
  • 打赏
  • 举报
回复
学到了,谢谢两位
bw555 2014-12-23
  • 打赏
  • 举报
回复
goto可读性差,但是也有优点,他的代码复用率较高 使用goto的话基本上可以实现不写重复的代码,最大化的复用所写的代码 他的写法更接近汇编语言,解析的效率应该也会快一点 还有就是灵活,特别是程序调整,打补丁的时候,使用goto有时代码会少好多 但是咋说呢,优点再多也不好用,可读性差注定他不被提倡 使用他容易出现一些意想不到的错误,一旦出错,很难找到问题原因,大部分时候只能重写
qianghe1314 2014-12-23
  • 打赏
  • 举报
回复
引用 6 楼 bw555 的回复:
使用goto的话代码的可读性会降低,给后面维护的人带来极大的麻烦,因此不提倡使用
版主说的很对 不过有句话存在就有其合理性,所以想请教一下,有没有很有意思很巧妙的应用例子。 总有一些情况是不得不用goto 或者不得不用命名块的,想知道是什么样的情况
卖水果的net 2014-12-22
  • 打赏
  • 举报
回复
的确是没看仔细,看成匿名块了。 命名块, 其实就是一个标识符,可以使用 goto 语句的那种。 名字可以随便起,就是 两个尖括号。
<<>>
qianghe1314 2014-12-22
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:

-- 就是一些临时性的工作,要处理一些数据,这是个例子,没测试,可能会有语法上的错误。
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  ;

首先感谢你的回答,不过这应该是匿名块吧? 可能我问题描述的不是太清楚,我不是想问这些匿名块、命名块是怎么定义的,亲。 这么说吧,命名块不是有名字的么?它的名字能怎么使用呢?我想要一个这样的例子。
卖水果的net 2014-12-22
  • 打赏
  • 举报
回复

-- 就是一些临时性的工作,要处理一些数据,这是个例子,没测试,可能会有语法上的错误。
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  ;

qianghe1314 2014-12-22
  • 打赏
  • 举报
回复
是我问的太理论性了吗?求大神回复

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧