--创建トリガー(行级トリガー)
トリガー tri_update_emp_bak を作成または置換します
アップデート後
emp_bak で
各行 --每更新一行 就触出版一次
始める
--oracle 里面ハエーターは特殊なオブジェクトも提供しています :NEW :OLD 来访问 前後のデータを更新します
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
更新する場合は
次の場合は終了します。
挿入する場合
終わり;
--创建トリガー(行级トリガー)(前置)
トリガー tri3_update_emp_bak を作成または置換します
アップデート前
emp_bak で
各行 --每更新一行 就触出版一次
始める
--oracle 里面ハエーターは特殊なオブジェクトも提供しています :NEW :OLD 来访问 前後のデータを更新します
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
終わり;
select * from emp_bak
update emp_bak set sal = 1000 where empno in (7788)
--创建トリガー(表级トリガー)
--//表级别触発器里面不允许使用 :NEW :OLD 变量
トリガー tri2_update_emp_bak を作成または置換します
アップデート後
emp_bak で
始める
-- dbms_output.put_line('更新後' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
終わり;
--创建トリガー(行级トリガー)
トリガー tri4_update_emp_bak を作成または置換します
サルのアップデート後
emp_bak で
各行 --每更新一行 就触出版一次
始める
--oracle 里面ハエーターは特殊なオブジェクトも提供しています :NEW :OLD 来访问 前後のデータを更新します
dbms_output.put_line('更新後' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
終わり;
テーブルのユーザー情報を作成する
(
ユーザーID番号(4)主キー、
ユーザー名 varchar2(20)
)
テーブルのアドレス情報を作成する
(
addrid 番号(4) 主キー、
addname varchar2(20)、
ユーザーID番号(4)はuserinfo(userid)を参照します
)
userinfo 値に挿入 (1,'李四')
addrinfo 値に挿入 (1,'湖北武汉',1)
select * from addrinfo
userid =1のuserinfoから削除
--级联删除
トリガー tri_userinfo_delete の作成または置換
削除する前に
ユーザー情報について
各行ごとに
始める
userid = :OLD.userid; の addrinfo から削除します。
-- に挿入します
終わり;
select * from dept としてテーブル dept_bak を作成します
ビュー myview を作成または置換する
として
a.empno、a.ename、a.sal、b.dnameを選択します
emp a 内部結合部門 b から
a.deptno = b.deptno で
マイビューから * を選択
myview を更新します。 set sal = 1000,dname='aaaaa' where empno = 7499
-- 代替トリガーは、画面上でのみ実行可能です。
-- 代替トリガーの特徴は、真の動作がすでに完了しており、その機能がトリガーによって実現されていることです。
トリガー tri_myview を作成または置換します
アップデートの代わりに
私のビューで
始める
dbms_output.put_line('删除操作実行完了。。。');
update emp set sal = :NEW.sal where empno = :OLD.empno;
update dept set dname = :NEW.dname ここで dname = :OLD.dname;
--empno = :OLD.empno の emp から削除します。
終わり;
select * from emp;
部門から * を選択します。
update emp_bak set ename ='aaaa',sal = 10000 where empno in (7788)
--系统包
-- 生成随机数
**** **** **** ****
--dbms_random.value 0-1 の間の随机小数
--dbms_random.random 随机整数
デュアルから dbms_random.value を選択します。
プロシージャ proc_cardno(mycardno out varchar2) を作成または置換します
として
tempcard varchar2(50);
カード番号 varchar2(19);
始める
tempcard:= dbms_random.value;
カード番号:=substr(tempcard,2,4)||' '||substr(tempcard,6,4)||' '||substr(tempcard,10,4)||' '||substr(tempcard,14,4);
mycardno:=cardno;
-- dbms_output.put_line(tempcard);
-- dbms_output.put_line(カード番号);
終わり;
--UTL_FILE包读写文ファイルを使用する
ディレクトリ MY_DIR を「d:temp」として作成します。
ディレクトリ MY_DIR2 を「d:temp2」として作成します。
宣言する
--定義文件オブジェクト
myfile utl_file.file_type;
--定量量は、一行のデータを保存するために使用されます。
linestr varchar2(200);
始める
--打文文
myfile:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循環)
ループ
utl_file.get_line(myfile,linestr);
dbms_output.put_line(linestr);
ループを終了します。
例外
他の人がそのとき
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
終わり;
宣言する
--定義文件オブジェクト
myfile utl_file.file_type;
--定量量は、一行のデータを保存するために使用されます。
linestr varchar2(200);
始める
--打文文
myfile:= utl_file.fopen('MY_DIR','oracle.log','a');
-- データの追加
--utl_file.get_line(myfile,linestr);
utl_file.put_line(myfile,'你好,これは新しいデータ',true);
utl_file.fclose(myfile);
例外
他の人がそのとき
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
終わり;
--コピー料
宣言する
--定義文件オブジェクト
ソースファイル utl_file.file_type;
ターゲットファイル utl_file.file_type;
--定量量は、一行のデータを保存するために使用されます。
linestr varchar2(200);
始める
--打文文
ソースファイル:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
-- 读取(循環)を実行し、新しい文書の里面に書き込みます
ループ
utl_file.get_line(ソースファイル,linestr);
utl_file.put_line(ターゲットファイル,linestr,true);
-- dbms_output.put_line(linestr);
ループを終了します。
例外
他の人がそのとき
utl_file.fclose(ソースファイル);
utl_file.fclose(ターゲットファイル);
dbms_output.put_line('贝完毕!');
終わり;
本書来源 CSDN 博客、转下请标明出处: http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx