Oracle PL/SQL ストアド プロシージャからの複数の結果セットの取得
Oracle PL/SQL では、ストアド プロシージャはカプセル化するための構造化された方法を提供します。 SQL クエリとデータベース ロジック。一般的な要件の 1 つは、指定された入力引数に基づいてストアド プロシージャから複数のレコード セットを返す必要があることです。これは、表またはユーザー定義オブジェクト (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 中国語 Web サイトの他の関連記事を参照してください。