当前位置: 首页 > 面试题库 >

为什么在FOR循环中按表达式连接仅执行一次?

海典
2023-03-14
问题内容

我只是发现我认为PLSQL与Oracle中的SQL有点意外的行为。

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

select level lvl from dual connect by level <=5;

但是,如果我在SQLDeveloper中运行以下语句:

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(怪异)结束

但最奇怪的部分是,如果我将查询封装在子查询中……

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


问题答案:

这是确认到9.2.0.8或更高版本的Oracle
9i版本中的错误。

先前在Ask
Tom
上进行了讨论,其响应只是
“ sqlplus可以做到这一点”

对Oracle
9.2的高级支持于2007-07-31终止,扩展支持于2010-06-30终止。要解决此问题,建议您升级到当前版本的Oracle。如果无法,则应修补9.2.0.8版以上的数据库。



 类似资料:
  • } 链接:https://www.hackerrank.com/challenges/java-string-compare/problem

  • 我对python中双for循环的使用感到困惑,这是我的代码: 输出如下: 它只对外循环的第一个值执行内循环,为什么会发生这种情况?我怎样才能让它在第一个和第二个变量的所有组合上循环?

  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 我发现这样的php代码: 我希望这个循环会执行4次,因为$I变成了对$的引用(对吗?)。然而,循环只执行一次,并输出: a=10,i=10 我不明白为什么它会这样工作。有什么想法吗?

  • 我一直在读一本面向初学者的书,“第一头HTML5编程”,其中有这样一段代码: 目前,如果我调用,它将返回下一次显示是在下午5:00。我将循环条件更改为“I<=movie.showtimes.length;”但它仍然只运行一次,并且只显示下午5点。循环只迭代一次,即使我重写了这个函数: 不是应该跑两次吗?

  • 问题内容: 我有这种方法,可以在登录前检查用户名和密码。现在,我的for循环仅检查第一个项目,它发现第一个项目不满足第一个条件,因此与其去检查第二个项目,它只是中断并返回null。 为什么会这样? 这是我的方法: 问题答案: 因此,请尝试此代码。