使用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中文網其他相關文章!