在 oracle 中,是否有内置函数可以生成具有给定数字的连续记录?例如,数字是100
,因此您可以生成一个包含 100 条记录的结果集,其值为 1、2、3、4...100,如下所示:
1
2
3
4
...
100
我知道存储过程可以做到这一点,我想知道是否有其他方法只使用 sql 语句?
select level
from dual
connect by level <= 100
这是另一种方法,使用model
子句。(Oracle 10g 及更高版本)。
SQL> select x
2 from dual
3 model
4 dimension by (0 as z)
5 measures (0 as x)
6 rules iterate(101) (
7 x[iteration_number] = iteration_number
8 )
9 ;
X
----------
0
1
2
3
4
5
6
7
8
9
10
11
...
100
请尝试使用 CTE:
WITH numbers(n) AS
(
SELECT 1 FROM dual
UNION ALL
SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;
使用分层查询是传统的:
select level
from dual
connect by level <= 100