ホームページ > データベース > mysql チュートリアル > Oracle PL/SQL ストアド プロシージャから複数の結果セットを取得するにはどうすればよいですか?

Oracle PL/SQL ストアド プロシージャから複数の結果セットを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-26 16:32:14
オリジナル
539 人が閲覧しました

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

Oracle PL/SQL ストアド プロシージャからの複数の結果セットの取得

Oracle PL/SQL では、ストアド プロシージャはカプセル化するための構造化された方法を提供します。 SQL クエリとデータベース ロジック。一般的な要件の 1 つは、指定された入力引数に基づいてストアド プロシージャから複数のレコード セットを返す必要があることです。これは、表またはユーザー定義オブジェクト (UDO) のコレクションを返す PL/SQL 関数を構築することで実現できます。

結果セットを返す関数を作成するには、次の手順に従います。

  1. データを保持するテーブル型またはコレクション型を定義します。
  2. 引数を受け取り、ローカル関数を宣言する関数を作成します。指定されたデータ型の変数。
  3. カーソルを実行するか、データベース内のレコードをループし、変数に値を設定し、それに応じてサイズを拡張します。
  4. 結果セットを含むデータ構造を返します。
  5. >

テーブル タイプを使用した例を次に示します。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート