ホームページ >データベース >mysql チュートリアル >Oracle PL/SQL ストアド プロシージャから複数の結果セットを返す方法
Oracle PL/SQL ストアド プロシージャを使用して複数の結果セットを返す
質問:
ストアド プロシージャを作成するにはどうすればよいですか?渡された引数に基づいてさまざまなデータセットを取得し、その後プレーンから呼び出します。 SQL?
答え:
Oracle PL/SQL ストアド プロシージャから複数の結果セットを返すには、次のアプローチを使用できます:
オブジェクトとテーブルのタイプの作成:
まず、オブジェクトとテーブルのタイプを定義します結果セットのデータ構造を表します。この例では、empno (number) と ename (varchar2) という 2 つの属性を持つ emp_obj オブジェクト タイプを作成します。次に、emp_obj オブジェクトのコレクションとして emp_tab テーブル タイプを作成します。
ストアド プロシージャを構築します。
関数を定義します (all_empsこの場合)、emp_tab コレクションを返します。関数内:
SQL からストアド プロシージャを呼び出します:
呼び出すにはSQL の all_emps 関数では、テーブル演算子を使用します。これにより、返されたコレクションを通常のテーブルとしてクエリできるようになります。
例:
SQL> create type emp_obj is object (empno number, ename varchar2(10)); SQL> create type emp_tab is table of emp_obj; SQL> create or replace function all_emps return emp_tab is l_emp_tab emp_tab := emp_tab(); n integer := 0; begin for r in (select empno, ename from emp) loop l_emp_tab.extend; n := n + 1; l_emp_tab(n) := emp_obj(r.empno, r.ename); end loop; return l_emp_tab; end; 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
以上がOracle PL/SQL ストアド プロシージャから複数の結果セットを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。