--创建行为(行级行为)
创建或替换触发器 tri_update_emp_bak
更新后
关于 emp_bak
for every row -- 每更新一行就触发一次
开始
--oracle 里面对欺诈也提供了特殊的对象 :NEW :OLD 来访问更新反向的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
如果更新的话
结束如果;
如果插入
结尾;
--创建举报(行级举报)(前置)
创建或替换触发器 tri3_update_emp_bak
更新前
关于 emp_bak
for every row -- 每更新一行就触发一次
开始
--oracle 里面对欺诈也提供了特殊的对象 :NEW :OLD 来访问更新反向的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
结尾;
从emp_bak中选择*
更新 emp_bak 设置 sal = 1000 其中 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
for every row -- 每更新一行就触发一次
开始
--oracle 里面对欺诈也提供了特殊的对象 :NEW :OLD 来访问更新反向的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_output.put_line('更新前' || :OLD.sal);
结尾;
创建用户信息表
(
用户 ID 号(4) 主键,
用户名 varchar2(20)
)
创建表addrinfo
(
addrid number(4) 主键,
添加名称 varchar2(20),
用户 ID 号(4) 引用 userinfo(userid)
)
插入userinfo值(1,'李四')
插入addrinfo值(1,'湖北',1)
从地址信息中选择 *
从 userinfo 中删除 userid =1
--级联删除
创建或替换触发器 tri_userinfo_delete
删除前
在用户信息上
对于每一行
开始
从 addrinfo 中删除,其中 userid = :OLD.userid;
-- 插入到
结尾;
创建表 dept_bak 作为 select * from dept
创建或替换视图 myview
作为
选择a.empno、a.ename、a.sal、b.dname
来自 emp a 内连接部门 b
在 a.deptno = b.deptno 上
从我的视图中选择 *
更新 myview 设置 sal = 1000,dname='aaaaa' 其中 empno = 7499
-- 替代方案在上面的视图中使用只是行级的
——替代旋转的特点是真正的操作已经变成了一个由旋转来完成的动作
创建或替换触发器 tri_myview
而不是更新
在我看来
开始
dbms_output.put_line('删除操作执行了。。。');
更新 emp 设置 sal = :NEW.sal 其中 empno = :OLD.empno;
更新部门集 dname = :NEW.dname 其中 dname = :OLD.dname;
--从 emp 中删除,其中 empno = :OLD.empno;
结尾;
从雇员中选择*;
从部门中选择*;
更新 emp_bak set ename ='aaaa',sal = 10000 其中 empno in (7788)
--系统包
-- 产生随机数
******************
--dbms_random.value 0-1之间的随机小数
--dbms_random.random 随机整数
从对偶中选择 dbms_random.value;
创建或替换过程 proc_cardno(mycardno out varchar2)
作为
临时卡 varchar2(50);
卡诺 varchar2(19);
开始
临时卡:= dbms_random.value;
卡号:=substr(tempcard,2,4)||' '||substr(临时卡,6,4)||' '||substr(临时卡,10,4)||' '||substr(临时卡,14,4);
mycardno:=cardno;
-- 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;
--定义变量用于存储每行的数据
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);
开始
--打开文件
sourcefile:= 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(targetfile,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