如何 return 1,2,3.... 到 N 在与 ORACLE 中的函数不同的行中?

How to return 1,2,3.... to N in a separate row from function in ORACLE?

我是 oracle.I 的新手,想将一个数字发送到一个函数,并想打印 n.1,2...n 的值

假设如果我发送 n=5 那么我的输出将是这样的,

-------
i     |
-------
 1    |
  2   |
  3   |
  4   |
   5  |

假设如果我通过 n=10 那么,

-------
i     |
-------
 1    |
  2   |
  3   |
  4   |
   5  |
  6   |
   7  |
   8  |
   9  |
  10  | 

当我通过时,n=10 然后我的输出是,

-------
i     |
-------
 10  |    

我试过:

CREATE OR REPLACE FUNCTION OT.NUMBER_GEN(
data1 NUMBER
)
return VARCHAR2
IS
V_ALL_NUMBER VARCHAR2 
BEGIN
FOR REC IN data1
Loop
V_ALL_NUMBER := REC;
END LOOP;
RETURN V_ALL_NUMBER;
END OT.NUMBER_GEN;    

您可以使用递归查询来生成数字。

with cte (ct) as (
  select 1 as ct from dual
  union all
  select ct + 1 from cte
     where ct < 10
) select ct from cte

创建自定义嵌套 table 数字并具有函数 return 类型:

create or replace type number_nt is table of number;

create or replace function number_gen(data1 number) return number_nt is
    v_numbers number_nt := number_nt();
begin
    for i in 1 .. data1 loop
        v_numbers.extend;
        v_numbers(v_numbers.count) := i;
    end loop;
    return v_numbers;
end;
/

select * from table(number_gen(5));

但是,创建数字列表的最简单方法是 SQL 语句:

select level i from dual connect by level <= 5;