小编典典

SQL过程可以返回表吗?

sql

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


阅读 206

收藏
2021-03-17

共1个答案

小编典典

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

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

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。
了解更多

2021-03-17