回答

收藏

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

技术问答 技术问答 244 人阅读 | 0 人回复 | 2023-09-14

我只是发现我认为PLSQL与Oracle中的SQL有点意外的行为。
* }: o; ^$ o8 u  p如果我在SQLDeveloper上运行此查询,则会得到5个结果:
. X3 h2 B: M  f2 eselect level lvl from dual connect by level 但是,如果我在SQLDeveloper中运行以下语句:' z6 E. o2 H: H3 z/ u. F2 \, k
declare
& ]& }5 W" W# P. O+ A, V: j5 @  w_counter number :=0;
+ l" K8 X" B: Ybegin9 J6 o3 l1 v) e2 J" [
  for REC in (select level lvl from dual connect by level 变量 w_counter 以值1(怪异)结束
0 U- P# D, m7 L但最奇怪的部分是,如果我将查询封装在子查询中……0 q" z) a6 G3 C: x+ o( w
declare8 L8 G4 m1 i+ }, g" [! D
  w_counter number :=0;' V* w) P5 j2 ]9 a) R+ o: f
begin( `( E) K8 b6 {# p% [8 ~
  for REC in (select * from (select level lvl from dual connect by level 该 w_counter 变量完成与价值5 …5 ?2 ~- n' I7 ]9 D7 C
你对此有什么要说的?
9 F6 z3 u, J* D' b. i5 Q我正在使用Oracle 9.2i
& h( |. j! c3 \" A3 M                4 R+ M( `* W) d, E
解决方案:
2 I8 T- a6 A! n8 a' ^               
5 S) F% T/ B! U  L* ^. _
# n4 ]( C5 ^  F/ k$ U5 m9 p6 |& N5 e( m1 Z  c' d0 V( K/ R/ Z: G
                这是确认到9.2.0.8或更高版本的Oracle. R: W2 X( A+ H, I2 D: G
9i版本中的错误。
& @: j" r% [- Z9 P1 ^先前在Ask, k4 W/ K( ]( h5 r+ u
Tom上进行了讨论,其响应只是
! k3 t9 C3 q" ~3 c1 r' y“ sqlplus可以做到这一点” 。1 _3 J2 s2 I3 ~6 j1 |
对Oracle
5 c7 m! t4 S: n$ d5 r9 `9.2的高级支持于2007-07-31终止,扩展支持于2010-06-30终止。要解决此问题,建议您升级到当前版本的Oracle。如果无法,则应修补9.2.0.8版以上的数据库。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则