首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在FOR循环中按表达式连接,只执行一次?

问为什么在FOR循环中按表达式连接,只执行一次?
EN

Stack Overflow用户
提问于 2014-04-02 15:02:45
回答 1查看 895关注 0票数 22

我刚刚发现了我认为在Oracle中的PLSQL和SQL中有些出乎意料的行为。

如果我在SQLDeveloper上运行这个查询,就会得到5个结果:

代码语言:javascript
复制
select level lvl from dual connect by level <=5;

但是,如果我在SQLDeveloper中运行这个语句:

代码语言:javascript
复制
declare
  w_counter number :=0;
begin
  for REC in (select level lvl from dual connect by level <=5)
  loop
    w_counter := w_counter+1;
  end loop;
  dbms_output.put_line('W_COUNTER: '|| w_counter);
end;

变量w_counter以值1结束(奇怪)

但最奇怪的是,如果我将查询封装在子查询中.类似于:

代码语言:javascript
复制
declare
  w_counter number :=0;
begin
  for REC in (select * from (select level lvl from dual connect by level <=5))
  loop
    w_counter := w_counter+1;
  end loop;
  dbms_output.put_line('W_COUNTER: '|| w_counter);
end;

w_counter变量以值5结束。

你对此有什么要说的?

我正在使用Oracle 9.2i

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 05:45:17

是个虫子在Oracle9i 已确认最多9.2.0.8的版本中,但不能超越。

以前在问汤姆上讨论过,响应只是"sqlplus可以做到这一点“。

对Oracle9.2 结束于2007-07-31的主要支持和扩展支持在2010-06-30年结束.要解决此问题,建议升级到当前版本的Oracle;如果无法,则应将数据库修补过9.2.0.8版本。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22815549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档