1

在 oracle 中,是否有内置函数可以生成具有给定数字的连续记录?例如,数字是100,因此您可以生成一个包含 100 条记录的结果集,其值为 1、2、3、4...100,如下所示:

1
2
3
4
...
100

我知道存储过程可以做到这一点,我想知道是否有其他方法只使用 sql 语句?

4

4 回答 4

4
select level 
from dual 
connect by level <= 100
于 2013-04-24T09:08:16.630 回答
2

这是另一种方法,使用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
于 2013-04-24T10:58:20.733 回答
1

请尝试使用 CTE:

WITH numbers(n) AS
(
SELECT 1 FROM dual
UNION ALL
SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;
于 2013-04-24T09:05:25.257 回答
1

使用分层查询是传统的:

 select level
   from dual
connect by level <= 100
于 2013-04-24T09:08:33.347 回答