--创建触发器(行级触发器)
Trigger tri_update_emp_bak erstellen oder ersetzen
nach dem Update
auf emp_bak
für jede Zeile --每更新一行 就触发一次
beginnen
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
wenn dann aktualisieren
Ende, wenn;
wenn einfügen
Ende;
--创建触发器(行级触发器)(前置)
Trigger tri3_update_emp_bak erstellen oder ersetzen
vor dem Update
auf emp_bak
für jede Zeile --每更新一行 就触发一次
beginnen
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
Ende;
Wählen Sie * aus emp_bak
update emp_bak set sal = 1000 wobei empno in (7788)
--创建触发器(表级触发器)
--//表级别触发器里面 不允许使用 :NEU :ALT 变量
Trigger tri2_update_emp_bak erstellen oder ersetzen
nach dem Update
auf emp_bak
beginnen
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
Ende;
--创建触发器(行级触发器)
Trigger tri4_update_emp_bak erstellen oder ersetzen
nach Update von sal
auf emp_bak
für jede Zeile --每更新一行 就触发一次
beginnen
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
Ende;
Erstellen Sie eine Tabelle mit Benutzerinformationen
(
Benutzer-ID-Nummer (4) Primärschlüssel,
Benutzername varchar2(20)
)
Tabellenadresse erstellen
(
addrid number(4) Primärschlüssel,
addname varchar2(20),
Benutzer-ID-Nummer(4) verweist auf Benutzerinfo(Benutzer-ID)
)
In Userinfo-Werte einfügen (1,'李四')
in Addrinfo-Werte einfügen (1,'湖北武汉',1)
Wählen Sie * aus Addrinfo aus
Aus Benutzerinfo löschen, wobei Benutzer-ID = 1 ist
--级联删除
Trigger tri_userinfo_delete erstellen oder ersetzen
vor dem Löschen
auf Benutzerinfo
für jede Zeile
beginnen
aus Addrinfo löschen, wobei userid = :OLD.userid;
-- einfügen in
Ende;
Erstellen Sie die Tabelle dept_bak als select * from dept
Ansicht myview erstellen oder ersetzen
als
Wählen Sie a.empno,a.ename,a.sal,b.dname
von emp a inner join abt b
auf a.deptno = b.deptno
Wählen Sie * aus meiner Ansicht aus
update myview set sal = 1000,dname='aaaaa' wobei empno = 7499
--替代触发器 用在视图上面 只能是行级的
--替代触发器 特点是 真正的操作已经 变成了一个动作而已 功能由触发器来完成
Trigger tri_myview erstellen oder ersetzen
statt aktualisieren
aus meiner Sicht
beginnen
dbms_output.put_line('Sie können dies nicht tun.。。');
update emp set sal = :NEW.sal where empno = :OLD.empno;
update dept set dname = :NEW.dname where dname = :OLD.dname;
--delete from emp where empno = :OLD.empno;
Ende;
wähle * aus emp;
* aus Abteilung auswählen;
update emp_bak set ename ='aaaa',sal = 10000 where empno in (7788)
--系统包
-- 产生随机数
**** **** **** ****
--dbms_random.value 0-1 之间的随机小数
--dbms_random.random 随机整数
Wählen Sie dbms_random.value aus dual;
Erstellen oder ersetzen Sie die Prozedur proc_cardno(mycardno out varchar2)
als
tempcard varchar2(50);
Cardno Varchar2(19);
beginnen
tempcard:= dbms_random.value;
Kartennummer:=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(cardno);
Ende;
--使用UTL_FILE包读写文件
Erstellen Sie das Verzeichnis MY_DIR als 'd:temp';
Erstellen Sie das Verzeichnis MY_DIR2 als 'd:temp2';
erklären
--定义文件对象
meineDatei utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linestr varchar2(200);
beginnen
--打开文件
myfile:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循环)
Schleife
utl_file.get_line(myfile,linestr);
dbms_output.put_line(linestr);
Endschleife;
Ausnahme
wenn andere dann
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
Ende;
erklären
--定义文件对象
meineDatei utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linestr varchar2(200);
beginnen
--打开文件
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);
Ausnahme
wenn andere dann
utl_file.fclose(myfile);
dbms_output.put_line('读取完毕!');
Ende;
--拷贝
erklären
--定义文件对象
Quelldatei utl_file.file_type;
Zieldatei utl_file.file_type;
--定义变量 用来存储每读出一行的数据
linestr varchar2(200);
beginnen
--打开文件
sourcefile:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到新的文件里面
Schleife
utl_file.get_line(sourcefile,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
Endschleife;
Ausnahme
wenn andere dann
utl_file.fclose(Quelldatei);
utl_file.fclose(targetfile);
dbms_output.put_line('拷贝完毕!');
Ende;
Weitere Informationen finden Sie unter CSDN: http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx