カーソルとトリガ

カーソルを定義します。1.

SELECT、INSERT、DELETEおよびUPDATE文PL / SQLブロックを実行し、Oracleコンテキストは、すなわち、バッファ、メモリ領域(コンテキスト領域)が割り当てられます。カーソルが領域、または指定された作業エリア(ワークエリア)、または構造化データ型へのポインタです。これは、クエリ結果セットが別々に処理されたデータの複数の行を有し、パーSQLステートメントを組み込みアプリケーション用に設計された一般的なプログラムアプリケーションであるデータの各列のための方法を提供します。

カーソルカテゴリ

1.明示的な  処理のためにカーソル SELECT ステートメントによって返されるデータの複数の行を、人間の介入を作成

2.暗黙の  処理のためにカーソル SELECT INTO と非クエリのDML 文を、自動的に作成、管理、

 

2.  明示カーソルのサンプル演習

 

- カーソルのパラメータの受け渡し、表示カーソル

 

DECLARE

 

  - カーソルの定義、指定されたサイクルのリスト

 

  カーソルc_curがruanjian182から選択*です。

 

  - 参照のコレクションを定義します。

 

  v_info ruanjian182%ROWTYPE;

 

ベギン

 

  - オープンカーソル

 

  オープンc_cur;

 

  - ループ周期取得。

 

  ループ

 

    v_infoにc_curフェッチ。

 

    - 出口条件

 

    ときc_cur%NOTFOUND終了。

 

    DBMS_OUTPUT.PUT_LINE(v_info.id || '「|| v_info.name)。

 

  ループを終了します。

 

  - カーソルのクローズ

 

  近くc_cur;

 

終わり;

3.暗黙カーソルのサンプル演習

- ループの暗黙カーソル:

DECLARE

  - カーソルの定義、指定されたサイクルのリスト

  カーソルc_curがruanjian182から選択*です。

ベギン

  c_curループでv_infoため

    DBMS_OUTPUT.PUT_LINE(v_info.id || '「|| v_info.name)。

  ループを終了します。

終わり;


 

トリガーの1.定義

トリガーは、ストアドプロシージャで暗黙的に実行され、それを使用することができます PL / SQL の開発を

(例えば、データベースにログオンし、テーブルを変更するオブジェクトの作成など)は、特定のイベントが発生すると、 Oracleは自動的にコードが実行される対応するトリガします

 

型フリップフロップ

 

1、DMLトリガ

 

データベース内のテーブル場合DML(挿入、更新、削除)操作がトリガされ、各ライン又は文の動作をトリガすることができます。

 

図2に示すように、代わりのフリップフロップ

 

これは、ある動作トリガのビューの一種のために設計されOracle8の

 

図3に示すように、システム・トリガー

 

など、起動、シャットダウン、などのデータベースシステムのトリガイベント、

 

注意事項:

 

1.トリガーは、パラメータを受け付けません。

 

12、トリガーの最大2台が、同時に、同じイベントが存在することができ、トリガーの同じタイプは、唯一のことができます。トリガーの間ではない矛盾。

 

表3.複数のトリガ、テーブル大きな性能上のDML操作の影響。

 

4.トリガー32キロバイトの最大。必要であれば確かに、とトリガー呼び出しでは、CALLステートメントをプロセスを確立します。

 

トリガーは、トランザクション制御文(COMMIT、ROLLBACK、SAVEPOINT)を含めることはできません。トリガーは、文が提出され、トリガー、文の一部を発射し、ロールバックが、トリガーもコミットされているので、ロールバック。トリガー本体内のプロシージャ、関数呼び出しは、トランザクション制御文を使用することはできません。

 

-表头复制
1 = 2 ruanjian182 * FROM TABLE rj182_log AS SELECTを作成します。
ruanjian182から*を選択します。
rj182_logから*を選択します。

2. DMLトリガー 
-サンプルを削除:
作成またはトリガtr_del_rj182を置き換える
-削除操作に最初に指定されたトリガは、トリガ
削除する前に
オンruanjian182
-ロー・レベルのトリガを作成するための命令
のための各行が
始まる
-は、データが挿入される前に変更されますロギングテーブルには、SQLが動作することを確認して
INSERT INTO rj182_log値を(:old.id ,: old.name ,: old.age、
:old.price ,: old.createdate ,: old.sex、 '削除') ;
END;

-変形例:
作成またはトリガtr_update_rj182交換
-トリガー変更操作トリガされた後、指定された時間を
更新した後
オンruanjian182を
行ごとに
開始
-修正された値を記録
rj182_log値(挿入:new.id、 :new.name、 :new.age、
:new.price ,: new.createdate ,: new.sex、 'アップデート');
END;

-削除トリガーの
ドロップトリガrj182_log。

3.ログイン、ログアウトトリガ運動

-ログレコードテーブルを作成する
テーブルlog_event(作成
LOG_TYPE VARCHAR2(20)と、
ユーザ名VARCHAR2(20)と、
logonTime DATE、
logoffTime日
);
log_event SELECT * FROM。

-管理者アカウントのログオントリガーは必要です
作成またはlogon_triggerトリガーを置き換える
データベースログオンONにした後
始まる
INSERT INTOのlog_event(LOG_TYPE、ユーザ名、logonTime)
の値(「ログオン」、ora_login_user、SYSDATE);
END;

-使用の管理者アカウントのログアウトトリガする必要が
作成またはトリガーlogoff_trigger置き換える
ログオフONデータベースの前に
始めるに
INSERT INTOのlog_event(LOG_TYPE、ユーザ名、logoffTime)
の値を(「ログオフ」、ora_login_user、SYSDATE);
END;

 

おすすめ

転載: www.cnblogs.com/ZXDZXD/p/12468114.html