JGS*_*JGS 21 sql oracle plsql oracle9i
我刚刚发现了我认为在Oracle中PLSQL vs SQL中有些出乎意料的行为.
如果我在SQLDeveloper上运行此查询,我得到5个结果:
select level lvl from dual connect by level <=5;
Run Code Online (Sandbox Code Playgroud)
但是,如果我在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;
Run Code Online (Sandbox Code Playgroud)
变量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;
Run Code Online (Sandbox Code Playgroud)
该w_counter变量完成与价值5 ...
你有什么要对此说的?
我使用的是Oracle 9.2i
这是Oracle 9i版本中的一个错误,确认高达9.2.0.8,但不是超出.
之前在Ask Tom上讨论过,响应只是"sqlplus这样做".
对Oracle 9.2的高级支持在2007-07-31结束,扩展支持在2010-06-30结束.要解决此问题,建议您升级到当前版本的Oracle; 如果无法,则应修补数据库的版本9.2.0.8.
归档时间: |
|
查看次数: |
736 次 |
最近记录: |