Oracle 的异常和回滚

  1. DECLARE
  2. dept_no NUMBER (2) := 70;
  3. BEGIN
  4. --开始事务
  5. INSERT INTO dept
  6. VALUES (dept_no, '市场部', '北京'); --插入部门记录
  7. INSERT INTO dept
  8. VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录
  9. INSERT INTO emp --插入员工记录
  10. VALUES (7997, '威尔', '销售人员', NULL, TRUNC (SYSDATE), 5000,300, dept_no);
  11. --提交事务
  12. COMMIT;
  13. EXCEPTION
  14. WHEN DUP_VAL_ON_INDEX THEN --捕足异常
  15. DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息
  16. ROLLBACK; --回滚异常

ollback会默认回滚所有事务,savepoint可以保存点,rollback可以回滚到前一个点,减少数据重复操作。

  1. DECLARE
  2. dept_no NUMBER (2) :=90;
  3. BEGIN
  4. --开始事务
  5. SAVEPOINT A;
  6. INSERT INTO dept
  7. VALUES (dept_no, '市场部', '北京'); --插入部门记录
  8. SAVEPOINT B;
  9. INSERT INTO emp --插入员工记录
  10. VALUES (7997, '威尔', '销售人员', NULL, TRUNC (SYSDATE), 5000,300, dept_no);
  11. SAVEPOINT C;
  12. INSERT INTO dept
  13. VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录
  14. --提交事务
  15. COMMIT;
  16. EXCEPTION
  17. WHEN DUP_VAL_ON_INDEX THEN --捕足异常
  18. DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息
  19. ROLLBACK TO B; --回滚异常
  20. END;

异常的处理格式

  1. plsql 块中格式
  2.  
  3. Declare
  4. 变量
  5. Begin
  6. 代码块
  7.  
  8. EXCEPTION
  9. when 异常的名称 then
  10. 如生上面的异常时做的具体工作。
  11. End;

常用异常处理:

  1. set serveroutput on;
  2. create or replace procedure pr12
  3. as
  4. --定义一个intliang
  5. v_age integer;
  6. v_name varchar(30);
  7. begin
  8. v_age:=89;
  9. --通过selectv_name设置值
  10. --修改成过程
  11. select name into v_name from stud where id=1;
  12. DBMS_OUTPUT.PUT_LINE('没有出错');
  13. exception
  14. when value_error then
  15. SYS.DBMS_OUTPUT.PUT_LINE('数值错误');
  16. when no_data_found then
  17. SYS.DBMS_OUTPUT.PUT_LINE('没有数据');
  18. when others then
  19. SYS.DBMS_OUTPUT.PUT_LINE(sqlcode||'你出错了'||sqlerrm);
  20. end;
  21.  
  22. exec pr12();
  23. -----------------------------------------
  24. --自定义异常自己抛出异常/
  25. /*
  26. 定义一个自己的异常
  27. myException Exception;
  28. 抛出异常
  29. RAISE myException;
  30.  
  31. 处理自己的异常:
  32. Exception
  33. When myException then
  34. ....
  35. */
  36. set serveroutput on;
  37. declare
  38. myEx exception;
  39. begin
  40. DBMS_OUTPUT.PUT_LINE('这里没错');
  41. raise myEx;
  42. DBMS_OUTPUT.PUT_LINE('不会输出,前面抛出异常');
  43. --处理异常
  44. exception
  45. when myEx then
  46. DBMS_OUTPUT.PUT_LINE('自己的异常'||sqlcode||' '||sqlerrm);
  47. when others then
  48. DBMS_OUTPUT.PUT_LINE('不知知道什么错误'||sqlcode||sqlerrm);
  49. END;
  50. ---出错直接抛出
  51.  
  52. declare
  53. begin
  54. DBMS_OUTPUT.PUT_LINE('no errors');
  55. --直接抛出
  56. RAISE_APPLICATION_ERROR(-20000, 'A');
  57. DBMS_OUTPUT.PUT_LINE('go okk....');
  58. exception
  59. when others then
  60. DBMS_OUTPUT.PUT_LINE(sqlcode||' '||sqlerrm);
  61. end;

Oracle 事务和异常处理的更多相关文章

  1. Asp.Net事务和异常处理:

    Asp.Net事务和异常处理: 一.什么是事务处理? 事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性. 如果在事务过程中没有遇到错误, ...

  2. Oracle事务

    Oracle事务的ACID特性 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生. 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态. 隔离性Isolatio ...

  3. 浅谈Oracle事务【转载竹沥半夏】

    浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...

  4. Oracle事务之一:锁和隔离

    Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...

  5. oracle事务和锁

    数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...

  6. oracle事务和锁(转)

    If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...

  7. oracle事务(转)

    今天温习oracle事务,记录如下: 事务定义            事务是保持数据的一致性,它由相关的DDL或者DML语句做为载体,这组语句执行的结果要么一起成功,要么一起失败.        我们 ...

  8. oracle 事务 与 提交

    Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...

  9. Oracle事务隔离级别处理差异

    Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...

随机推荐

  1. ceph压力测试结果总结

    万兆网速的ceph分布式存储单虚拟机下的带宽和iops测试结果: 带宽: 写:700-850MB 读:800-900MB iops: 写:15000-20000 读:45000-55000

  2. ios 中pickerView用法之国旗选择

    QRViewController控制器 // // QRViewController.m // #import "QRViewController.h" #import " ...

  3. wc语法2

    wc命令的功能为统计指定文件中的字节数.字数.行数, 并将统计结果显示输出. 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同 ...

  4. Appium·基础+项目

    date:2018609 day13 一.Appium Appium是一个开源.跨平台的测试框架.可以用来测试原生以及混合的移动端应用. 1.安装操作 ①.安装Appium-Python-Client ...

  5. css布局与文档流的关系之float(浮动)

    所谓文档流,指元素在排版布局的过程中,元素会自动从左到右,从上到下的流式排列.脱离文档流呢,就是元素打乱了这个排列,或是从排版中拿走. 说到文档流呢,我们先来说一下元素,每个元素呢,都有display ...

  6. 13.python错误和异常

    一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...

  7. while RE Validation

    一.简介 为什么需要正则表达式? 文本的复杂处理 正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言.数据库.文本编辑器.开发环境都支持正则表达式. 正则表达式定义: 正如它的名 ...

  8. [c#]_ELVE_Message多功能用法

     1.   当要显示如图3个按钮时,并要获得单击不同按钮的进行不同的相应时,可以在MessageBoxButtons后面添加一个.(应该英文的点,此处为了醒目,用中文代替)可以看到提示框下方需要几个按 ...

  9. oracle-logminer

    LogMiner工具实际上是由两个新的PL/SQL内建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOG ...

  10. zabbix安装、部署、lnmp(一)

    最近入手zabbix,准备好好的研究,好好的弄.   环境准备: mysql:5.6.29 PHP:5.6.12 Nginx:1.8.0 zabbix:3.2.6 操作系统:Centos6 用户:普通 ...