--创建触发器(行级触发器)
créer ou remplacer le déclencheur tri_update_emp_bak
après mise à jour
sur emp_bak
pour chaque ligne --每更新一行 就触发一次
commencer
--oracle 里面 对触发器 也提供了特殊的对象 :NOUVEAU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
si mise à jour alors
terminer si ;
si vous insérez
fin;
--创建触发器(行级触发器)(前置)
créer ou remplacer le déclencheur tri3_update_emp_bak
avant la mise à jour
sur emp_bak
pour chaque ligne --每更新一行 就触发一次
commencer
--oracle 里面 对触发器 也提供了特殊的对象 :NOUVEAU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
fin;
sélectionnez * dans emp_bak
mettre à jour emp_bak set sal = 1000 où empno in (7788)
--创建触发器(表级触发器)
---//表级别触发器里面 不允许使用 :NOUVEAU :ANCIEN 变量
créer ou remplacer le déclencheur tri2_update_emp_bak
après mise à jour
sur emp_bak
commencer
-- dbms_output.put_line('更新后' || :NEW.sal);
--dbms_output.put_line('更新前' || :OLD.sal);
fin;
--创建触发器(行级触发器)
créer ou remplacer le déclencheur tri4_update_emp_bak
après la mise à jour de sal
sur emp_bak
pour chaque ligne --每更新一行 就触发一次
commencer
--oracle 里面 对触发器 也提供了特殊的对象 :NOUVEAU :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
fin;
créer une table d'informations utilisateur
(
numéro d'utilisateur (4) clé primaire,
nom d'utilisateur varchar2 (20)
)
créer une table d'adresses
(
clé primaire numéro addrid (4),
nom supplémentaire varchar2(20),
le numéro d'ID utilisateur (4) fait référence à userinfo (userid)
)
insérer dans les valeurs userinfo (1, '李四')
insérer dans les valeurs addrinfo (1,'湖北武汉',1)
sélectionnez * dans addrinfo
supprimer de userinfo où userid = 1
--级联删除
créer ou remplacer le déclencheur tri_userinfo_delete
avant de supprimer
sur les informations utilisateur
pour chaque ligne
commencer
supprimer de addrinfo où userid = :OLD.userid ;
-- insérer dans
fin;
créer la table dept_bak en tant que select * from dept
créer ou remplacer une vue ma vue
comme
sélectionnez a.empno,a.ename,a.sal,b.dname
de emp a département de jointure interne b
sur a.deptno = b.deptno
sélectionnez * dans ma vue
mettre à jour myview set sal = 1000,dname='aaaaa' où empno = 7499
--替代触发器 用在视图上面 只能是行级的
--替代触发器 特点是 真正的操作已经 变成了一个动作而已 功能由触发器来完成
créer ou remplacer le déclencheur tri_myview
au lieu de mettre à jour
sur ma vue
commencer
dbms_output.put_line('删除操作执行了。。。');
update emp set sal = :NEW.sal où empno = :OLD.empno;
le service de mise à jour a défini dname = :NEW.dname où dname = :OLD.dname;
--delete de emp où empno = :OLD.empno;
fin;
sélectionnez * dans emp ;
sélectionnez * dans le département ;
update emp_bak set ename ='aaaa',sal = 10000 où empno in (7788)
--系统包
-- 产生随机数
**** **** **** ****
--dbms_random.value 0-1
--dbms_random.random à propos de
sélectionnez dbms_random.value dans dual ;
créer ou remplacer la procédure proc_cardno(mycardno out varchar2)
comme
carte temp varchar2 (50);
numéro de carte varchar2(19);
commencer
tempcard:= dbms_random.value;
numéro de carte :=substr(tempcard,2,4)||' '||substr(tempcard,6,4)||' '||substr(tempcard,10,4)||' '||substr(tempcard,14,4);
mon numéro de carte :=numéro de carte ;
-- dbms_output.put_line(tempcard);
-- dbms_output.put_line(cardno);
fin;
--使用UTL_FILE包读写文件
créer le répertoire MY_DIR sous la forme 'd:temp' ;
créer le répertoire MY_DIR2 sous la forme 'd:temp2' ;
déclarer
--定义文件对象
monfichier utl_file.file_type;
--定义变量 用来存储每读出一行的数据
lignestr varchar2(200);
commencer
--打开文件
monfichier:= utl_file.fopen('MY_DIR','oracle.log','r');
--进行读取(循环)
boucle
utl_file.get_line(monfichier,linestr);
dbms_output.put_line(linestr);
terminer la boucle ;
exception
quand d'autres alors
utl_file.fclose(monfichier);
dbms_output.put_line('读取完毕!');
fin;
déclarer
--定义文件对象
monfichier utl_file.file_type;
--定义变量 用来存储每读出一行的数据
lignestr varchar2(200);
commencer
--打开文件
monfichier:= utl_file.fopen('MY_DIR','oracle.log','a');
--追加数据
--utl_file.get_line(monfichier,linestr);
utl_file.put_line(myfile,'你好,这是新的数据',true);
utl_file.fclose(monfichier);
exception
quand d'autres alors
utl_file.fclose(monfichier);
dbms_output.put_line('读取完毕!');
fin;
--拷贝
déclarer
--定义文件对象
fichier source utl_file.file_type;
fichier cible utl_file.file_type;
--定义变量 用来存储每读出一行的数据
lignestr varchar2(200);
commencer
--打开文件
fichier source:= utl_file.fopen('MY_DIR','oracle.log','r');
targetfile:= utl_file.fopen('MY_DIR2','copy.txt','a');
--进行读取(循环) 并且写入到新的文件里面
boucle
utl_file.get_line(fichier source,linestr);
utl_file.put_line(targetfile,linestr,true);
-- dbms_output.put_line(linestr);
terminer la boucle ;
exception
quand d'autres alors
utl_file.fclose(fichier source);
utl_file.fclose(fichiercible);
dbms_output.put_line('拷贝完毕!');
fin;
Lien vers le CSDN, http://blog.csdn.net/hzz1988/archive/2009/12/30/5107869.aspx