首页 > 解决方案 > 如何在 ORACLE 中的函数的单独行中将 1,2,3.... 返回到 N?

问题描述

我是 oracle 的新手。我想向函数发送一个数字并希望打印到 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;    

标签: mysqlsqldatabaseoracleoracle10g

解决方案


创建一个自定义的嵌套数字表并让函数返回该类型:

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;

推荐阅读