ホームページ > データベース > Oracle > Oracle のストアド プロシージャとトリガーの詳細な説明

Oracle のストアド プロシージャとトリガーの詳細な説明

PHPz
リリース: 2023-04-21 10:58:38
オリジナル
1140 人が閲覧しました

Oracle はよく知られたリレーショナル データベース管理システムであり、大規模なエンタープライズ レベルのシステムの開発と保守によく使用されます。 Oracle ではストアド プロシージャとトリガーが非常に重要なデータベース オブジェクトであるため、この記事ではその機能と使用方法を紹介します。

1. ストアド プロシージャ

1. 関数

ストアド プロシージャは、コンパイルされてデータベースに保存される一連の SQL ステートメントです。これは関数のように呼び出すことができ、入力パラメーターを受け取り、結果を返します。ストアド プロシージャは、データ クエリ、データ変更、データ バックアップなどのさまざまな複雑な操作を完了できます。これらにより、データベース プログラミングの作業が大幅に簡素化されます。

2. 作成

Oracle では、ストアド プロシージャを作成するには PL/SQL 言語を使用する必要があり、SQL Developer や SQL*Plus などのツールを使用して作成および編集できます。以下はストアド プロシージャを作成する簡単な例です。

CREATE OR REPLACE PROCEDURE p_add (x IN NUMBER, y IN NUMBER, z OUT NUMBER) IS
BEGIN
  z := x + y;
END p_add;
ログイン後にコピー

上の例では、2 つの入力パラメータ x と y と 1 つの出力パラメータ z を持つ p_add という名前のストアド プロシージャを定義します。ストアド プロシージャの本体で、入力パラメータ x と y を追加し、結果を出力パラメータ z に割り当てます。

3. 呼び出し

ストアド プロシージャを作成した後、それを呼び出すことでその中の SQL ステートメントを実行できます。 PL/SQL でストアド プロシージャを呼び出す方法は 2 つあります。

  • EXECUTE 文を使用します。
EXECUTE p_add(1,2,:OUT);
ログイン後にコピー

上の例では、p_add ストアド プロシージャという名前のプロシージャを呼び出しました。 、パラメーター 1 と 2 を渡し、OUT パラメーターを使用して結果を出力します。

  • PL/SQL ブロックの使用:
DECLARE
  a NUMBER;
BEGIN
  p_add(1,2,a);
  DBMS_OUTPUT.PUT_LINE('The result is: ' || a);
END;
ログイン後にコピー

上の例では、PL/SQL ブロックを使用してストアド プロシージャを呼び出し、結果を出力します。

2. トリガー

1. 関数

トリガーは、テーブルに対して INSERT、UPDATE、および DELETE 操作を自動的に実行できる、テーブルに関連付けられた特別なオブジェクトです。いくつかのアクション。トリガーは、データ検証、データ複製、データバックアップなどの操作に使用できます。

2. 作成

Oracle では、トリガーを作成するには PL/SQL 言語を使用する必要がありますが、SQL Developer や SQL*Plus などのツールを使用して作成および編集することもできます。

CREATE OR REPLACE TRIGGER trg_ins_emp
BEFORE INSERT ON emp
FOR EACH ROW
BEGIN
  :NEW.create_time := SYSDATE;
END trg_ins_emp;
ログイン後にコピー

上の例では、新しいレコードが emp テーブルに挿入される前に現在時刻を変更する trg_ins_emp という名前のトリガーを定義します。 create_time フィールド。

上記の例では、BEFORE キーワードはデータが挿入される前にトリガーがトリガーされることを示し、FOR EACH ROW は INSERT ステートメントが実行されるたびにトリガーされることを示します。

3. 呼び出し

トリガーを作成した後、手動で呼び出す必要はなく、関連するテーブルに対して INSERT、UPDATE、および DELETE 操作を実行するだけでトリガーをトリガーできます。以下は、INSERT 操作を実行する簡単な例です:

INSERT INTO emp (name, salary) VALUES ('Jack', 5000);
ログイン後にコピー

上の例では、emp テーブルにレコードを挿入します。trg_ins_emp という名前のトリガーを作成したため、レコードを挿入するとき、create_time フィールドは次のようになります。現在時刻が自動的に割り当てられます。

3. 概要

ストアド プロシージャとトリガーは Oracle の 2 つの非常に重要なオブジェクトであり、データベース プログラミングの作業を大幅に簡素化します。ストアド プロシージャは複雑な SQL 操作をカプセル化できるため、コードの保守性と再利用性が大幅に向上します。トリガーは、繰り返し作業を避けるために、テーブル操作中に一部の操作を自動的に実行できます。この記事が、読者が Oracle データベースのストアド プロシージャとトリガーをさらに理解するのに役立つことを願っています。

以上がOracle のストアド プロシージャとトリガーの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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