PL/SQL EXCEPTION捕获抛出异常
EXCEPTION抛出异常
处理除数为零异常
declare
varA number;
begin
varA:=10/0;
dbms_output.put_line('IT WILL NOT WORK');
EXCEPTION
when zero_divide then --when 后面加的是异常名称
dbms_output.put_line('it can not be zero');
dbms_output.put_line('SQLCODE= '||SQLCODE);--异常编号
END;
/
it can not be zero
SQLCODE= -1476
PL/SQL procedure successfully completed.
处理赋值异常
declare
varA varchar2(1);
varB varchar2(6):='oracle';
begin
varA:=varB;
dbms_output.put_line('wrong value');
exception
when value_error then
dbms_output.put_line('Wrong');
dbms_output.put_line('SQLCODE= '||SQLCODE);
END;
/
Wrong
SQLCODE= -6502
PL/SQL procedure successfully completed.
WHEN后面若无捕获,则交由程序默认处理
找不到数据
declare
eno emp.empno%TYPE;
ename emp.ename%TYPE;
begin
eno:=&empno;
select ename into ename from emp where empno=eno;
dbms_output.put_line('eno:'||eno||' ename:'||ename);
exception
when no_data_found then
dbms_output.put_line('not found empno');
end;
/
Enter value for empno: 9999
old 5: eno:=&empno;
new 5: eno:=9999;
not found empno
返回多条结果
declare
dno emp.deptno%TYPE;
ename emp.ename%TYPE;
begin
dno:=&deptno;
select ename into ename from emp where deptno=dno;
exception
when too_many_rows then
dbms_output.put_line('too many data');
dbms_output.put_line('SQLCODE '||SQLCODE);
END;
/
Enter value for deptno: 10
old 5: dno:=&deptno;
new 5: dno:=10;
too many data
SQLCODE -1422
使用OTHERS来捕获所有异常
declare
result number;
title varchar2(50):='www.vastdata.com.cn';
begin
result:=title;
exception
when others then
dbms_output.put_line('SQLCODE= '||SQLCODE);
dbms_output.put_line('SQLERRM= '||SQLERRM);
END;
/
SQLCODE= -6502
SQLERRM= ORA-06502: PL/SQL: numeric or value error: character to number
conversion error
使用用户定义异常
declare
data number;
myexp exception;
Pragma exception_init(myexp,-20789);
begin
data:=&inputData;
if data>10 and data<100 then
raise myexp;
end if;
exception
when others then
dbms_output.put_line('---------Wrong---------');
dbms_output.put_line('sqlcode= '||sqlcode);
dbms_output.put_line('sqlerrm= '||sqlerrm);
end;
/
构建动态异常
declare
data number;
myexp exception;
pragma exception_init(myexp,-20789);
begin
dbms_output.put_line('input number:');
data:=&inputData;
if data>10 and data<100 then
raise_application_error(-20789,'values can not be 10-100');
end if;
exception
when others then
dbms_output.put_line('sqlcode= '||sqlcode);
dbms_output.put_line('sqlerrm= '||sqlerrm);
end;
/
Enter value for inputdata: 11
old 7: data:=&inputData;
new 7: data:=11;
input number:
sqlcode= -20789
sqlerrm= ORA-20789: values can not be 10-100
PL/SQL EXCEPTION捕获抛出异常的更多相关文章
- PL/SQL — 集合及常用方法
PL/SQL中提供了常用的三种集合联合数组.嵌套表.变长数组,而对于这几个集合类型中元素的操作,PL/SQL提供了相应的函数或过程来操纵数组中的元素或下标.这些函数或过程称为集合方法.一个集合方法就是 ...
- PL/SQL编程基础(五):异常处理(EXCEPTION)
异常处理 异常产生所带来的问题: 使用EXCEPTION程序块进行异常处理: 实现用户自定义异常. 使用异常可以保证在程序中出现运行时异常时程序可以正常的执行完毕: 用户可以使用自定义异常进行操作. ...
- oracle PL/SQL(procedure language/SQL)程序设计之异常(exception)
什么是异常?在PL/SQL中的一个标识.在程序运行期间被触发的错误.异常是怎样被触发的?产生一个Oracle错误.用户显示触发.怎样处理异常?用异常处理句柄捕获异常.传播异常到调用环境. 捕获异常 E ...
- ORACLE PL/SQL异常处理(Exception)学习笔记
1.PL/SQL错误类型 错误类型 报告者 处理方法 编译时错误 PL/SQL编译器 交互式地处理:编译器报告错误,你必须更正这些错误 运行时错误 PL/SQL运行时引擎 程序化地处理:异常由异常处理 ...
- PL/SQL 08 异常 exception
--PL/SQL错误 编译时 运行时 --运行时的出错处理 EXCEPTION --异常处理块DECLARE …BEGIN …EXCEPTION WHEN OTHERS THEN handle ...
- PL/SQL异常处理方法
PL/SQL异常处理方法 1:什么是异常处理: PL/SQL提供一个功能去处理异常,在PL/SQL块中叫做异常处理,使用异常处理我们能够测试代码和避免异常退出. PL/SQL异常信息包含三个部分: ...
- 整理课堂笔记 pl/sql orcale异常
1>>>>>异常错误处理 1 >预定义的异常处理 预定义说明的部分 ORACLE 异常错误对这种异常情况的处理,只需在PL/SQL块的异常处理部分,直接引用相应 ...
- PL/SQL基础-异常处理
--*********异常处理一.异常的类型 ORACLE异常分为两种类型:系统异常.自定义异常. 其中系统异常又分为:预定义异常和非预定义异常.1.预定义异常 ORACLE定义了他们的错误编号和异常 ...
- pl/sql programming 15 数据提取
数据提取 -- 游标 游标只是一个指向某个结果集的指针. 声明游标: cursor employee_cur IS select * from employees; 打开游标: open employ ...
随机推荐
- 本地Chrome测试JS代码报错:XMLHttpRequest cannot load
这种file跨域问题在火狐下是不存在的 解决Chrome下file跨域问题: 在Chrome应用程序下,右键属性,目标处添加"--allow-file-access-from-files&q ...
- 《C++标准程序库》笔记之三
本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. ---------------------------------------------------------- ...
- codeforces水题100道 第二十一题 Codeforces Beta Round #65 (Div. 2) A. Way Too Long Words (strings)
题目链接:http://www.codeforces.com/problemset/problem/71/A题意:将长字符串改成简写格式.C++代码: #include <string> ...
- JDBC批量执行executeBatch
JDBC事务 在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态.为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这 ...
- Android Studio 出现 Gradle's dependency cache may be corrupt 解决方案
将 .\项目地址\gradle\wrapper\gradle-wrapper.properties 文件中的 gradle版本 与 正常的版本 修改一致即可.
- 小北微信小程序之小白教程系列之 -- 样式(WXSS)
为了适应广大的前端开发者,WXSS 具有 CSS 大部分 特性.同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改.与 CSS 相比,WXSS 扩展的特性有:尺寸单位和样式导入. ...
- C数组&结构体&联合体快速初始化
背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序. C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元 ...
- 【easyswoole】 解决安装报错
在使用swoole 创建项目时候,报错 创建命令 composer create-project easyswoole/app easyswoole 错误信息: 解决办法,切换composer 源 镜 ...
- POP3协议分析
http://m.blog.csdn.net/bripengandre/article/details/2192111 POP3协议分析 第1章. POP3概述 POP3全称为Post Off ...
- mariadb修改root密码的方法
mariadb安装好后,root密码为空,可以先使用HeidiSQL链接到数据库,执行以下sql,就可以修改root的密码了 update mysql.user set password=passwo ...