カーソルを定義します。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;