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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 16:32:14544ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。