從Oracle PL/SQL 預存程序中擷取多個結果集
在Oracle PL/SQL 中,預存程序提供了一種結構化的方式來封裝SQL 查詢和資料庫邏輯。一個常見的要求是需要根據給定的輸入參數從預存程序傳回多組記錄。這可以透過建構回傳表或使用者定義物件 (UDO) 集合的 PL/SQL 函數來完成。
要建立傳回結果集的函數,請依照下列步驟操作:
這是使用表格類型的範例:
SQL> create type emp_obj is object (empno number, ename varchar2(10)); 2 / Type created. SQL> create type emp_tab is table of emp_obj; 2 / Type created. SQL> create or replace function all_emps return emp_tab 2 is 3 l_emp_tab emp_tab := emp_tab(); 4 n integer := 0; 5 begin 6 for r in (select empno, ename from emp) 7 loop 8 l_emp_tab.extend; 9 n := n + 1; 10 l_emp_tab(n) := emp_obj(r.empno, r.ename); 11 end loop; 12 return l_emp_tab; 13 end; 14 / Function created.
要從普通SQL 查詢中擷取結果集,只需查詢函數:
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
此方法可讓您有效率地從預存程序中檢索多個結果集,並在SQL 查詢中將它們作為常規表進行操作。
以上是如何從 Oracle PL/SQL 預存程序中檢索多個結果集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!