Oracle 事务和异常处理
Oracle 的异常和回滚
- DECLARE
- dept_no NUMBER (2) := 70;
- BEGIN
- --开始事务
- INSERT INTO dept
- VALUES (dept_no, '市场部', '北京'); --插入部门记录
- INSERT INTO dept
- VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录
- INSERT INTO emp --插入员工记录
- VALUES (7997, '威尔', '销售人员', NULL, TRUNC (SYSDATE), 5000,300, dept_no);
- --提交事务
- COMMIT;
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN --捕足异常
- DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息
- ROLLBACK; --回滚异常
ollback会默认回滚所有事务,savepoint可以保存点,rollback可以回滚到前一个点,减少数据重复操作。
- DECLARE
- dept_no NUMBER (2) :=90;
- BEGIN
- --开始事务
- SAVEPOINT A;
- INSERT INTO dept
- VALUES (dept_no, '市场部', '北京'); --插入部门记录
- SAVEPOINT B;
- INSERT INTO emp --插入员工记录
- VALUES (7997, '威尔', '销售人员', NULL, TRUNC (SYSDATE), 5000,300, dept_no);
- SAVEPOINT C;
- INSERT INTO dept
- VALUES (dept_no, '后勤部', '上海'); --插入相同编号的部门记录
- --提交事务
- COMMIT;
- EXCEPTION
- WHEN DUP_VAL_ON_INDEX THEN --捕足异常
- DBMS_OUTPUT.PUT_LINE(SQLERRM); --显示异常消息
- ROLLBACK TO B; --回滚异常
- END;
异常的处理格式
- 在plsql 块中格式
- Declare
- 变量
- Begin
- 代码块
- EXCEPTION
- when 异常的名称 then
- 如生上面的异常时做的具体工作。
- End;
常用异常处理:
- set serveroutput on;
- create or replace procedure pr12
- as
- --定义一个int变liang
- v_age integer;
- v_name varchar(30);
- begin
- v_age:=89;
- --通过select给v_name设置值
- --修改成过程
- select name into v_name from stud where id=1;
- DBMS_OUTPUT.PUT_LINE('没有出错');
- exception
- when value_error then
- SYS.DBMS_OUTPUT.PUT_LINE('数值错误');
- when no_data_found then
- SYS.DBMS_OUTPUT.PUT_LINE('没有数据');
- when others then
- SYS.DBMS_OUTPUT.PUT_LINE(sqlcode||'你出错了'||sqlerrm);
- end;
- exec pr12();
- -----------------------------------------
- --自定义异常自己抛出异常/
- /*
- 定义一个自己的异常
- myException Exception;
- 抛出异常
- RAISE myException;
- 处理自己的异常:
- Exception
- When myException then
- ....
- */
- set serveroutput on;
- declare
- myEx exception;
- begin
- DBMS_OUTPUT.PUT_LINE('这里没错');
- raise myEx;
- DBMS_OUTPUT.PUT_LINE('不会输出,前面抛出异常');
- --处理异常
- exception
- when myEx then
- DBMS_OUTPUT.PUT_LINE('自己的异常'||sqlcode||' '||sqlerrm);
- when others then
- DBMS_OUTPUT.PUT_LINE('不知知道什么错误'||sqlcode||sqlerrm);
- END;
- ---出错直接抛出
- declare
- begin
- DBMS_OUTPUT.PUT_LINE('no errors');
- --直接抛出
- RAISE_APPLICATION_ERROR(-20000, 'A');
- DBMS_OUTPUT.PUT_LINE('go okk....');
- exception
- when others then
- DBMS_OUTPUT.PUT_LINE(sqlcode||' '||sqlerrm);
- end;
Oracle 事务和异常处理的更多相关文章
- Asp.Net事务和异常处理:
Asp.Net事务和异常处理: 一.什么是事务处理? 事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性. 如果在事务过程中没有遇到错误, ...
- Oracle事务
Oracle事务的ACID特性 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生. 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态. 隔离性Isolatio ...
- 浅谈Oracle事务【转载竹沥半夏】
浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...
- Oracle事务之一:锁和隔离
Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...
- oracle事务和锁
数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...
- oracle事务和锁(转)
If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...
- oracle事务(转)
今天温习oracle事务,记录如下: 事务定义 事务是保持数据的一致性,它由相关的DDL或者DML语句做为载体,这组语句执行的结果要么一起成功,要么一起失败. 我们 ...
- oracle 事务 与 提交
Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...
- Oracle事务隔离级别处理差异
Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...
随机推荐
- ceph压力测试结果总结
万兆网速的ceph分布式存储单虚拟机下的带宽和iops测试结果: 带宽: 写:700-850MB 读:800-900MB iops: 写:15000-20000 读:45000-55000
- ios 中pickerView用法之国旗选择
QRViewController控制器 // // QRViewController.m // #import "QRViewController.h" #import " ...
- wc语法2
wc命令的功能为统计指定文件中的字节数.字数.行数, 并将统计结果显示输出. 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同 ...
- Appium·基础+项目
date:2018609 day13 一.Appium Appium是一个开源.跨平台的测试框架.可以用来测试原生以及混合的移动端应用. 1.安装操作 ①.安装Appium-Python-Client ...
- css布局与文档流的关系之float(浮动)
所谓文档流,指元素在排版布局的过程中,元素会自动从左到右,从上到下的流式排列.脱离文档流呢,就是元素打乱了这个排列,或是从排版中拿走. 说到文档流呢,我们先来说一下元素,每个元素呢,都有display ...
- 13.python错误和异常
一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...
- while RE Validation
一.简介 为什么需要正则表达式? 文本的复杂处理 正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言.数据库.文本编辑器.开发环境都支持正则表达式. 正则表达式定义: 正如它的名 ...
- [c#]_ELVE_Message多功能用法
1. 当要显示如图3个按钮时,并要获得单击不同按钮的进行不同的相应时,可以在MessageBoxButtons后面添加一个.(应该英文的点,此处为了醒目,用中文代替)可以看到提示框下方需要几个按 ...
- oracle-logminer
LogMiner工具实际上是由两个新的PL/SQL内建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOG ...
- zabbix安装、部署、lnmp(一)
最近入手zabbix,准备好好的研究,好好的弄. 环境准备: mysql:5.6.29 PHP:5.6.12 Nginx:1.8.0 zabbix:3.2.6 操作系统:Centos6 用户:普通 ...