使用 Oracle PL/SQL 存储过程返回多个结果集
问题:
我们如何创建存储过程根据传递的参数检索各种数据集,然后从普通调用它SQL?
答案:
要从 Oracle PL/SQL 存储过程返回多个结果集,我们可以采用以下方法:
创建对象和表类型:
首先,我们定义对象和表类型来表示结果集的数据结构。在此示例中,我们创建一个具有两个属性的 emp_obj 对象类型:empno(数字)和 ename(varchar2)。然后我们创建一个 emp_tab 表类型作为 emp_obj 对象的集合。
构建存储过程:
我们定义一个函数(all_emps in在本例中)返回一个 emp_tab 集合。在函数内部:
从 SQL 调用存储过程:
调用SQL 中的 all_emps 函数,我们使用表运算符。这允许我们将返回的集合作为常规表进行查询。
示例:
SQL> create type emp_obj is object (empno number, ename varchar2(10)); SQL> create type emp_tab is table of emp_obj; SQL> create or replace function all_emps return emp_tab is l_emp_tab emp_tab := emp_tab(); n integer := 0; begin for r in (select empno, ename from emp) loop l_emp_tab.extend; n := n + 1; l_emp_tab(n) := emp_obj(r.empno, r.ename); end loop; return l_emp_tab; end; SQL> select * from table (all_emps);
结果:
EMPNO ENAME ---------- ---------- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7902 FORD 7934 MILLER
以上是如何从 Oracle PL/SQL 存储过程返回多个结果集?的详细内容。更多信息请关注PHP中文网其他相关文章!