Oracle PL/SQL のストアド プロシージャから複数のレコード セットを返す
Oracle PL/SQL でストアド プロシージャを使用する場合、複数のセットを返す指定された引数に基づいてレコードの数を増やすことが一般的な要件になる場合があります。これを実現する方法は次のとおりです。
結果セットを返す関数の作成
結果セットを返す関数を作成するには、次のカスタム タイプを定義できます。返したいオブジェクトを表し、関数内でその型のテーブルを宣言します。このテーブルは、関数に渡された引数に基づいて動的に設定されます。
次の例を考えてみましょう:
CREATE TYPE emp_obj AS OBJECT (empno NUMBER, ename VARCHAR2(10)); CREATE TYPE emp_tab AS TABLE OF emp_obj; 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;
結果セットのクエリ
関数が作成されると、返された結果セットをテーブルであるかのようにクエリできます。たとえば、次のクエリはすべての従業員を表示します:
SELECT * FROM table (all_emps);
これにより、従業員番号と名前を含むすべての従業員のリストが返されます。
プレーンからの関数の呼び出しSQL
プレーン SQL から関数を呼び出すには、次のコードを使用します。構文:
SELECT * FROM all_emps;
これにより、関数が実行され、結果セットが返されます。
以上がOracle PL/SQL ストアド プロシージャから複数の結果セットを返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。