回答

收藏

SQL查询从双返回N行

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

我想编写一个接受绑定变量(例如:NUM)的SQL查询,其输出由一列和:NUM行数组成,每一行都有其行号。也就是说,如果我们将:NUM作为7传递,则输出应为:
+ u7 C4 i2 R2 Q5 b, w2 xVAL6 Y! L+ z' {- w/ A5 d' u5 F
====$ m0 v* K: k3 r1 k: {, W" @( D
1$ a: K, g1 b% X4 b: j; M* L1 h8 }
2
% A" A3 p. Q1 R3  s9 _3 M% i9 y  |$ v% u
4
9 Y% J- l& M) h- p5; E8 T( B3 v1 C; X
6+ B' v5 h( @0 ]9 N. Z* k
7  w  O4 W% v; p' ^3 M
查询中不应有任何实际的数据库表,也不应使用PL / SQL代码。即在查询中仅应使用双重
' z+ l/ b4 \& w! ~& L有什么办法可以做到这一点?
; r( N# X1 ~) r% G; s4 N               
! X" W8 k( r5 K" J! \0 l解决方案:
7 ^% a0 J  |" ^0 Y0 l1 O" t/ H4 Q                ' U+ O: }; v9 w8 P" G# E
* M7 R' s2 F9 D# y7 s4 q

# E* [) d# t7 Y  m# \  V                您可以使用:
. S9 g7 N" R: K% {% B" ~ WHERE ROWNUM …但是表必须包含等于或大于bind变量限制的行。
$ ?$ I4 R- e/ A4 H) Q3 @. O该链接演示了Oracle中的各种行号生成技术。% J+ r4 x6 P+ l0 N' G2 U5 g, f* m
使用CONNECT BY,Oracle 10g +:
0 }: [$ ^* j. C" o4 lSELECT LEVEL
: L- g8 Y% F# G( d2 w  FROM DUAL
. g) m3 m2 o9 ]) x7 C* ?CONNECT BY LEVEL 确认monojohnny可以使用bind变量。尝试在Oracle 9i上运行,尽管CONNECT BY支持语法会导致ORA-01436错误。
5 u% B$ N7 A5 K( k0 b0 ]* C. P" p我唯一不是100%的人是CONNECT BY是否会接受来自绑定变量的限制。
4 R) s& f* o+ Q/ t, q# H7 a参考:
. h2 A' b1 g+ A' A! n+ [4 Y7 t- Y整数系列发生器-按级别连接6 ^+ n# V/ A8 q+ W1 Q9 Y4 i4 x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则