mysql - 如何在 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;
解决方案
创建一个自定义的嵌套数字表并让函数返回该类型:
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;
推荐阅读
- java - java.lang.NoClassDefFoundError: javax.xml.bind.DatatypeConverterImpl(初始化失败)
- c++ - 有没有办法从对列表中获取列表,有效地将列表分成两个在 C++ 中
- python - Python Graph Search——确定后继节点是否比当前节点更接近目标
- android - EncryptedFile 加密什么类型的文件
- reactjs - 如何在 ReactJS 中使用上下文来更改不同函数中的属性
- apache-flink - 在 Apache Flink/Ververica CE 中添加自定义连接器
- javascript - 在javascript中更新对象属性?
- python - 将pycharm中的终端从sh改为普通
- jpa - 为什么 JPA EntityManager 会阻止代码执行?
- java - 如何检查java方法是否返回null而无需运行两次