/*
异常:程序运行出现非正常清空
在plsql块中,正常代码出现异常 将终止执行正常代码 而是跳转到exception对应的代码
oracle中常见的异常:
ACCESS_INTO_NULL
未定义对象
CASE_NOT_FOUND
CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时
COLLECTION_IS_NULL
集合元素未初始化
CURSER_ALREADY_OPEN
游标已经打开
DUP_VAL_ON_INDEX
唯一索引对应的列上有重复的值
INVALID_CURSOR
在不合法的游标上进行操作
INVALID_NUMBER
内嵌的 SQL 语句不能将字符转换为数字
NO_DATA_FOUND
使用 select into 未返回行,或应用索引表未初始化的元素时
TOO_MANY_ROWS
执行 select into 时,结果集超过一行
ZERO_DIVIDE
除数为 0
SUBSCRIPT_BEYOND_COUNT
元素下标超过嵌套表或 VARRAY 的最大值
SUBSCRIPT_OUTSIDE_LIMIT
使用嵌套表或 VARRAY 时,将下标指定为负数
VALUE_ERROR
赋值时,变量长度不足以容纳实际数据
LOGIN_DENIED
PL/SQL 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码
NOT_LOGGED_ON
PL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据
PROGRAM_ERROR
PL/SQL 内部问题,可能需要重装数据字典& pl./SQL 系统包
ROWTYPE_MISMATCH
宿主游标变量与 PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL
使用对象类型时,在 null 对象上调用对象方法
STORAGE_ERROR
运行 PL/SQL 时,超出内存空间
SYS_INVALID_ID
无效的 ROWID 字符串
TIMEOUT_ON_RESOURCE
Oracle 在等待资源时超时
*/
select * from stuinfo;
declare
a int;
b varchar(3);
c int;
begin
insert into stuinfo(sno,sname,sbirth) values(11,'呵呵呵',sysdate);
select sage into c from stuinfo where sno=202020;
select sage into c from stuinfo;
b:='123456';
a:=1/0;
exception
when DUP_VAL_ON_INDEX then
dbms_output.put_line('捕获到异常::DUP_VAL_ON_INDEX 违反唯一约束');
when NO_DATA_FOUND then
dbms_output.put_line('捕获到异常::NO_DATA_FOUND 没有找到对应的数据');
when TOO_MANY_ROWS then
dbms_output.put_line('捕获到异常::TOO_MANY_ROWS 只要一个 但获取多个');
when VALUE_ERROR then
dbms_output.put_line('捕获到异常::VALUE_ERROR 变量精度太低');
when ZERO_DIVIDE then
dbms_output.put_line('捕获到异常::ZERO_DIVIDE 被0除');
when others then
dbms_output.put_line('捕获到异常::when others then');
end;
-- 自定义异常类型
declare
age int:='&请输入年龄:';
MY_AGE_EXCEPTION exception; /*自定义异常*/
begin
/*指定出现自定义异常的条件*/
if age<=0 or age >120 then
raise MY_AGE_EXCEPTION; /*产生异常情况*/
end if;
dbms_output.put_line('age='||age);
exception
when MY_AGE_EXCEPTION then
dbms_output.put_line('出现异常:MY_AGE_EXCEPTION:年龄范围出错!');
RAISE_APPLICATION_ERROR(-20001,'年龄范围出错:必须是[0,120]');/*通过弹出框 显示异常编号和异常原因*/
when others then
dbms_output.put_line('出现异常:出现其他异常!');
end;
oracle异常Exception:oracle16(跟着宝哥学java:oracle系列:全网最全):异常exception、oracle自定义异常
最新推荐文章于 2023-05-31 17:02:51 发布