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

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

Mary-Kate Olsen
リリース: 2024-12-31 08:56:09
オリジナル
467 人が閲覧しました

How Can I Return Multiple Result Sets from Oracle PL/SQL Stored Procedures?

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

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