首頁 > 資料庫 > mysql教程 > 如何從 Oracle PL/SQL 預存程序中檢索多個結果集?

如何從 Oracle PL/SQL 預存程序中檢索多個結果集?

Patricia Arquette
發布: 2024-12-26 16:32:14
原創
540 人瀏覽過

How Can I Retrieve Multiple Result Sets from an Oracle PL/SQL Stored Procedure?

從Oracle PL/SQL 預存程序中擷取多個結果集

在Oracle PL/SQL 中,預存程序提供了一種結構化的方式來封裝SQL 查詢和資料庫邏輯。一個常見的要求是需要根據給定的輸入參數從預存程序傳回多組記錄。這可以透過建構回傳表或使用者定義物件 (UDO) 集合的 PL/SQL 函數來完成。

要建立傳回結果集的函數,請依照下列步驟操作:

  1. 定義一個表格類型或集合類型來儲存資料。
  2. 建立一個接受參數並宣告指定的局部變數的函數資料型態。
  3. 執行遊標或循環遍歷資料庫中的記錄,填充變數並相應擴展其大小。
  4. 傳回包含結果集的資料結構。

這是使用表格類型的範例:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板