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