1 使用set transaction设置事务属性
2 只读事务 set transaction read only
3 读写事务 set transaction write; 4 在进行数据统计分析工作时,一般都会查询数据库中的多个表,此时可以将查询统计 5 工作定义为只读事务, 防止进行DML操作 6 --只读事务示例 7 declare 8 v_1981 number(2); 9 v_1982 number(2); 10 v_1983 number(2); 11 begin 12 commit; 13 set transaction read only name '统计年度入职数据'; 14 select count(empno) into v_1981 from emp where 15 to_char(hiredate,'yyyy')='1981'; 16 select count(empno) into v_1982 from emp where 17 to_char(hiredate,'yyyy')='1982'; 18 select count(empno) into v_1983 from emp where 19 to_char(hiredate,'yyyy')='1983'; 20 commit; 21 dbms_output.put_line('1981年入职人数:'||v_1981); 22 dbms_output.put_line('1982年入职人数:'||v_1982); 23 dbms_output.put_line('1983年入职人数:'||v_1983); 24 end; 25 26 27 --不同块中的异常作用域级别 28 declare 29 e_outerexception exception; 30 begin 31 declare 32 e_innerexception exception; 33 begin 34 raise e_innerexception; 35 raise e_outerexception; 36 end; 37 --raise e_innerexception; --在外层异常出发内存块异常时非法的 38 --外层异常覆盖内层异常 39 exception raise e_outerexception; 40 when others then 41 dbms_output.put_line('出现了错误'||'错误编号' 42 ||SQLCODE||'错误名称'||sqlerrm); 43 end; 44 --exception_init使用示例 把Oracle系统异常关联到我们自定义异常 45 declare 46 e_missingnull exception; 47 pragma exception_init (e_missingnull,-1400); 48 begin 49 insert into emp(empno) values(null); 50 commit; 51 exception 52 when e_missingnull then 53 dbms_output.put_line('触发了ORA-1400错误!'||sqlerrm); 54 rollback; 55 end;