--创建触发器 (行级触发器)
สร้างหรือแทนที่ทริกเกอร์ 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);
จบ;
เลือก * จาก emp_bak
อัปเดต emp_bak set sal = 1,000 โดยที่ empno ใน (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
หลังจากอัพเดต sal
บน emp_bak
สำหรับแต่ละแถว --每更新一行 就触发一次
เริ่ม
--oracle 里เลดี้ 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('ใหม่' || :NEW.sal);
dbms_output.put_line('ใหม่' || :OLD.sal);
จบ;
สร้างข้อมูลผู้ใช้ตาราง
-
หมายเลขผู้ใช้ (4) คีย์หลัก
ชื่อผู้ใช้ varchar2(20)
-
สร้างตาราง addrinfo
-
หมายเลขแอดเดรส (4) คีย์หลัก
เพิ่มชื่อ varchar2(20)
หมายเลขรหัสผู้ใช้ (4) อ้างอิงข้อมูลผู้ใช้ (รหัสผู้ใช้)
-
แทรกลงในค่าข้อมูลผู้ใช้ (1,'李四')
แทรกลงในค่า addrinfo (1,'湖北武汉',1)
เลือก * จาก addrinfo
ลบออกจาก userinfo โดยที่ userid =1
--级联删除
สร้างหรือแทนที่ทริกเกอร์ tri_userinfo_delete
ก่อนที่จะลบ
บนข้อมูลผู้ใช้
สำหรับแต่ละแถว
เริ่ม
ลบออกจาก addrinfo โดยที่ userid = :OLD.userid;
--ใส่เข้าไป.
จบ;
สร้างตาราง dept_bak โดยเลือก * จากแผนก
สร้างหรือแทนที่มุมมอง myview
เช่น
เลือก a.empno,a.ename,a.sal,b.dname
จาก emp ฝ่ายเข้าร่วมภายใน b
บน a.deptno = b.deptno
เลือก * จาก myview
อัปเดต myview set sal = 1,000,dname='aaaaa' โดยที่ empno = 7499
--替代触发器 用在视上上的只能是行级的
--替代触发器 特点是 真正的操作已经 变成了一个动作而已 功能由触发器来完成
สร้างหรือแทนที่ทริกเกอร์ tri_myview
แทนที่จะอัปเดต
บนมายวิว
เริ่ม
dbms_output.put_line('删除操作执行了。。。');
อัปเดต emp set sal = :NEW.sal โดยที่ empno = :OLD.empno;
อัพเดตแผนก set dname = :NEW.dname โดยที่ dname = :OLD.dname;
--ลบออกจาก emp โดยที่ empno = :OLD.empno;
จบ;
เลือก * จาก emp;
เลือก * จากแผนก;
อัปเดต emp_bak ตั้ง ename = 'aaaa', sal = 10,000 โดยที่ empno ใน (7788)
--系统包
-- 产生随机数
-
--dbms_random.value 0-1 之间的随机小数
--dbms_random.random สุ่ม
เลือก dbms_random.value จากคู่;
สร้างหรือแทนที่โพรซีเดอร์ proc_cardno (mycardno out varchar2)
เช่น
เทมการ์ด varchar2 (50);
คาร์โนวาร์ชาร์2(19);
เริ่ม
tempcard:= dbms_random.value;
cardno:=substr(เทมการ์ด,2,4)||' '||substr(เทมการ์ด,6,4)||' '||substr(เทมการ์ด,10,4)||' '||substr(เทมการ์ด,14,4);
mycardno:=คาร์โน;
-- dbms_output.put_line(tempcard);
-- dbms_output.put_line(cardno);
จบ;
--使用UTL_FILE包读写文件
สร้างไดเรกทอรี MY_DIR เป็น 'd:temp';
สร้างไดเรกทอรี MY_DIR2 เป็น 'd:temp2';
ประกาศ
--定义文件对象
myfile utl_file.file_type;
--定义变量 用来存储每读出一行的数据
เส้นตรง 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(ไฟล์ของฉัน);
dbms_output.put_line('读取完毕!');
จบ;
ประกาศ
--定义文件对象
myfile utl_file.file_type;
--定义变量 用来存储每读出一行的数据
เส้นตรง varchar2(200);
เริ่ม
--打 เริ่มต้น文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加数据
--utl_file.get_line(myfile,linestr); --utl_file.get_line(myfile,linestr);
utl_file.put_line(myfile,'คุณ好,这是新的数据',true);
utl_file.fclose(ไฟล์ของฉัน);
ข้อยกเว้น
เมื่อคนอื่นแล้ว
utl_file.fclose(ไฟล์ของฉัน);
dbms_output.put_line('读取完毕!');
จบ;
--拷贝
ประกาศ
--定义文件对象
ซอร์สไฟล์ utl_file.file_type;
ไฟล์เป้าหมาย utl_file.file_type;
--定义变量 用来存储每读出一行的数据
เส้นตรง 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,จริง);
-- 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