gpt4 book ai didi

sql - SQL 过程可以返回表吗?

转载 作者:行者123 更新时间:2023-12-02 17:50:44 25 4
gpt4 key购买 nike

Oracle SQL 过程可以返回表吗?我目前正在使用 dbms_output 来打印循环中两个游标的输出,尽管如果它返回两列,这看起来会更好。这在程序中可能吗?

最佳答案

PL/SQL 函数可以返回嵌套表。如果我们将嵌套表声明为 SQL 类型,我们就可以将其用作查询源,使用 the TABLE() function .

这是一个类型,以及一个由它构建的嵌套表:

SQL> create or replace type emp_dets as object (
2 empno number,
3 ename varchar2(30),
4 job varchar2(20));
5 /

Type created.

SQL> create or replace type emp_dets_nt as table of emp_dets;
2 /

Type created.

SQL>

这是一个返回嵌套表的函数...

create or replace function get_emp_dets (p_dno in emp.deptno%type)
return emp_dets_nt
is
return_value emp_dets_nt;
begin
select emp_dets(empno, ename, job)
bulk collect into return_value
from emp
where deptno = p_dno;
return return_value;
end;
/

...这就是它的工作原理:

SQL> select * 
2 from table(get_emp_dets(10))
3 /

EMPNO ENAME JOB
---------- ------------------------------ --------------------
7782 CLARK MANAGER
7839 KING PRESIDENT
7934 MILLER CLERK

SQL>
<小时/>

SQL 类型为我们提供了大量的功能,并允许我们在 PL/SQL 中构建相当复杂的 API。 Find out more .

关于sql - SQL 过程可以返回表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com