Oracle は、世界で最も広く使用されているリレーショナル データベース管理システムの 1 つです。優れた安定性、拡張性、セキュリティという利点があります。また、Oracle は、データベースの機能の一種であるストアド プロシージャ機能も提供しています。データベース (database). PL/SQL に似た構文を持つ、実行された SQL 文のコレクション。ストアド プロシージャは主に、反復的なコードの簡素化、コードの再利用性の向上、データ処理の高速化などを目的として使用されます。この記事では、Oracle でストアド プロシージャを作成し、結果セットを返す方法を紹介します。
1. ストアド プロシージャの基本
Oracle では、ストアド プロシージャは、クエリ、挿入、更新、削除、その他のデータベース操作を実行できる SQL ステートメントの集合です。 Oracle では、PL/SQL 言語を使用してストアド プロシージャを作成できます。ストアド プロシージャは、CREATE PROCEDURE ステートメントを使用して作成されるデータベース オブジェクトです。また、CREATE FUNCTION ステートメントを使用してファンクション タイプのストアド プロシージャを作成することもできます。関数型のストアド プロシージャは値を返しますが、ストアド プロシージャは値を返しませんが、OUT パラメータを使用して結果を返すことができます。ストアド プロシージャを使用すると、ユーザーはパラメータをカスタマイズできるため、データ アクセスと処理の複雑さが軽減されます。
ストアド プロシージャの利点:
ストアド プロシージャの欠点:
2. ストアド プロシージャの構文
ストアド プロシージャは主に DECLARE、BEGIN、EXCEPTION、および END ステートメントで構成され、そのうちの DECLARE ステートメントは次のとおりです。変数、カーソル、レコード型などを宣言します。 BEGIN ステートメントには、ストアド プロシージャの特定の機能を実装するために使用されるストアド プロシージャの主要な実行コードが含まれており、IF、LOOP、WHILE などの制御構造や SQL ステートメントを含めることができます。 EXCEPTION ステートメントは、操作の例外を処理するために使用されます。 END ステートメントはストアド プロシージャの終了を示します。
ストアド プロシージャの構文は次のとおりです。
CREATE OR REPLACE PROCEDURE プロシージャ名 (IN_parameter IN data_type, OUT_parameter OUT data_type)
IS
DECLARE
variable_name data_type : = 値 ;
BEGIN
--実行ステートメント
EXCEPTION
--例外処理
END;
パラメータの説明:
1. CREATE OR REPLACE PROCEDURE: ストアド プロシージャを作成または置換します。
2.procedure_name: ストアド プロシージャの名前 (一意である必要があります)。
3. IN_parameter: ストアド プロシージャの入力パラメータの名前。単一のパラメータまたは複数のパラメータを指定できます。
4. data_type: IN_parameter のデータ型
5. OUT_parameter: ストアド プロシージャの出力パラメータの名前。レコードまたはカーソルのタイプを返すことができます。
6. DECLARE: 変数、カーソル、レコード型などを宣言するために使用されます。
7. variable_name: 変数の名前
8. value: 変数の割り当て
9. BEGIN: ストアド プロシージャのメイン実行コードが含まれます。ストアド プロシージャ固有の関数を実装するために使用されます。
10. EXCEPTION: 操作中に例外を処理するために使用されます。
11. END: ストアド プロシージャが終了します。
3. ストアド プロシージャは結果セットを返します
Oracle では、ストアド プロシージャは OUT パラメータを通じて結果を返すことができます。ストアド プロシージャでは、カーソル変数を使用してクエリ結果セットを読み取り、その結果を OUT パラメータに渡す必要があります。具体的な手順は次のとおりです:
1. ストアド プロシージャと OUT パラメータを定義します
CREATE OR REPLACE PROCEDURE プロシージャ名(p_out_parameter OUT SYS_REFCURSOR)
IS
BEGIN
- -ステートメントの実行
OPEN p_out_parameter FOR SELECT column1, column2 FROM table_name;
END;
説明:
上記のストアド プロシージャは、OUT パラメータ p_out_parameter を定義します。このストアド プロシージャのデータ型は、パラメータは SYS_REFCURSOR です。
2. ストアド プロシージャの呼び出し
DECLARE
type_name SYS_REFCURSOR;
BEGIN
プロシージャ名(type_name);
END;
説明:
DECLARE キーワードを使用して、データ型が SYS_REFCURSOR であるカーソル変数 type_name を定義します。
ストアド プロシージャ process_name を呼び出し、パラメータ type_name を OUT パラメータ p_out_parameter に渡します。ストアド プロシージャの実行が完了すると、返されたクエリ結果はカーソル変数 type_name に格納されます。
3. カーソル変数を使用してクエリ結果を読み取る
DECLARE
type_name SYS_REFCURSOR;
column1_value VARCHAR2(50);
column2_value VARCHAR2(50);
BEGIN
プロシージャ名(タイプ名);
LOOP
FETCH type_name INTO column1_value, column2_value; EXIT WHEN type_name%NOTFOUND; --使用查询结果进行其他操作
END LOOP;
CLOSE type_name;
END;
命令:
上記を使用してくださいカーソル変数 type_name は、クエリ結果セットを行ごとに読み取り、各行の column1 および column2 の値を変数 column1_value および column2_value に格納します。
LOOP ステートメントと FETCH ステートメントを通じて、カーソル変数はクエリ結果セットを行ごとに読み取ることができます。最後の行がクエリされると、type_name%NOTFOUND 条件は TRUE を返し、ループは終了します。最後に、CLOSE ステートメントを使用してカーソルを閉じます。
4.概要
ストアド プロシージャは Oracle の効果的なデータ処理ツールであり、コードの重複を減らし、コードの再利用性を向上させ、データ処理を高速化することでデータ操作を最適化できます。ストアド プロシージャを作成するときは、その基本的な構文とパラメーターの規則を理解し、クエリ結果セットを返す方法を理解する必要があります。ストアド プロシージャを使用すると、データベースのパフォーマンスとセキュリティが大幅に向上し、Oracle データベース開発者に必要なスキルの 1 つとなります。
以上がOracle ストアド プロシージャは結果セットを返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。