--创建触发器(行级触发器)
buat atau ganti pemicu tri_update_emp_bak
setelah pembaruan
di emp_bak
untuk setiap baris --每更新一行 就触发一次
mulai
--Oracle 里面 对触发器 也提供了特殊的对象 :BARU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
jika memperbarui maka
berakhir jika;
jika memasukkan
akhir;
--创建触发器(行级触发器)(前置)
buat atau ganti pemicu tri3_update_emp_bak
sebelum pembaruan
di emp_bak
untuk setiap baris --每更新一行 就触发一次
mulai
--Oracle 里面 对触发器 也提供了特殊的对象 :BARU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
akhir;
pilih * dari emp_bak
perbarui emp_bak set sal = 1000 dimana empno di (7788)
--创建触发器(表级触发器)
--//表级别触发器里面 不允许使用 :BARU :OLD 变量
buat atau ganti pemicu tri2_update_emp_bak
setelah pembaruan
di emp_bak
mulai
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
akhir;
--创建触发器(行级触发器)
buat atau ganti pemicu tri4_update_emp_bak
setelah pembaruan sal
di emp_bak
untuk setiap baris --每更新一行 就触发一次
mulai
--Oracle 里面 对触发器 也提供了特殊的对象 :BARU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
akhir;
membuat tabel info pengguna
(
nomor userid (4) kunci utama,
nama pengguna varchar2(20)
)
membuat tabel addrinfo
(
nomor addrid(4) kunci utama,
tambahkan nama varchar2(20),
nomor userid(4) referensi info pengguna(userid)
)
masukkan ke dalam nilai info pengguna (1,'李四')
masukkan ke dalam nilai addrinfo (1,'湖北武汉',1)
pilih * dari addrinfo
hapus dari info pengguna di mana userid =1
--级联删除
buat atau ganti pemicu tri_userinfo_delete
sebelum menghapus
pada info pengguna
untuk setiap baris
mulai
hapus dari addrinfo di mana userid = :OLD.userid;
-- masukkan ke dalam
akhir;
buat tabel dept_bak sebagai pilih * dari dept
buat atau ganti tampilan tampilan saya
sebagai
pilih a.empno,a.ename,a.sal,b.dname
dari emp departemen gabungan dalam b
pada a.deptno = b.deptno
pilih * dari pandangan saya
perbarui set tampilan saya sal = 1000,dname='aaaaa' di mana empno = 7499
--替代触发器 用在视图上面 只能是行级的
--替代触发器 特点是 真正的操作已经 变成了一个动作而已 功能由触发器来完成
buat atau ganti pemicu tri_myview
alih-alih memperbarui
dalam pandanganku
mulai
dbms_output.put_line('删除操作执行了。。。');
perbarui emp set sal = :NEW.sal dimana empno = :OLD.empno;
perbarui set departemen dname = :NEW.dname di mana dname = :OLD.dname;
--hapus dari emp dimana empno = :OLD.empno;
akhir;
pilih * dari emp;
pilih * dari departemen;
perbarui emp_bak set ename ='aaaa',sal = 10000 dimana empno di (7788)
--系统包
-- 产生随机数
**** **** **** ****
--dbms_random.value 0-1 之间的随机小数
--dbms_random.random 随机整数
pilih dbms_random.value dari ganda;
buat atau ganti prosedur proc_cardno(mycardno out varchar2)
sebagai
kartu temp varchar2(50);
cardno varchar2(19);
mulai
kartu temp:= dbms_random.value;
cardno:=substr(tempcard,2,4)||' '||substr(kartu sementara,6,4)||' '||substr(kartu sementara,10,4)||' '||substr(kartu sementara,14,4);
mycardno:=kartu;
-- dbms_output.put_line(kartu sementara);
-- dbms_output.put_line(cardno);
akhir;
--使用UTL_FILE包读写文件
buat direktori MY_DIR sebagai 'd:temp';
buat direktori MY_DIR2 sebagai 'd:temp2';
menyatakan
--定义文件对象
file saya utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linetr varchar2(200);
mulai
--打开文件
file saya:= utl_file.fopen('MY_DIR','Oracle.log','r');
--进行读取(循环)
lingkaran
utl_file.get_line(file saya,linestr);
dbms_output.put_line(linestr);
putaran akhir;
pengecualian
ketika yang lain kemudian
utl_file.fclose(file saya);
dbms_output.put_line('读取完毕!');
akhir;
menyatakan
--定义文件对象
file saya utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linetr varchar2(200);
mulai
--打开文件
file saya:= utl_file.fopen('MY_DIR','Oracle.log','a');
--追加数据
--utl_file.get_line(file saya,linestr);
utl_file.put_line(filesaya,'你好,这是新的数据',true);
utl_file.fclose(file saya);
pengecualian
ketika yang lain kemudian
utl_file.fclose(file saya);
dbms_output.put_line('读取完毕!');
akhir;
--拷贝
menyatakan
--定义文件对象
file sumber utl_file.file_type;
file target utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linetr varchar2(200);
mulai
--打开文件
file sumber:= utl_file.fopen('MY_DIR','Oracle.log','r');
file target:= utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到新的文件里面
lingkaran
utl_file.get_line(file sumber,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
putaran akhir;
pengecualian
ketika yang lain kemudian
utl_file.fclose(file sumber);
utl_file.fclose(file target);
dbms_output.put_line('拷贝完毕!');
akhir;
Panduan CSDN, https://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx