前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PL/SQL学习笔记-异常处理

PL/SQL学习笔记-异常处理

作者头像
liulun
发布2022-05-09 11:04:07
3150
发布2022-05-09 11:04:07
举报
文章被收录于专栏:liulun

一:预定义异常错误 先看代码:

代码语言:javascript
复制
declare 
mytitle labor.xland.title%type;
begin
select title into mytitle from labor.xland where state = 2;
dbms_output.put_line(mytitle);
exception
when no_data_found then
dbms_output.put_line('没有找到数据');
end;

这段程序当检索到数据的时候就输出数据 检索不到数据即输出  没有找到数据 no_data_found 是一个预定义异常错误类型 更多预定义异常错误,请看: http://www.cnblogs.com/liulun/articles/1526177.html

二:非预定义异常错误 先看代码:

代码语言:javascript
复制
declare 
v_sqlcode number;
v_sqlerrm varchar2(2048);
begin
insert into labor.xland values(null,'1111',1);
exception
when no_data_found then
     dbms_output.put_line('没有找到数据');
when others then
     if sqlcode = -1400 then
        v_sqlcode := sqlcode;
        v_sqlerrm := sqlerrm;
        dbms_output.put_line(to_char(v_sqlcode));
        dbms_output.put_line(v_sqlerrm);
     end if;
end;

when 块不必跟end结束 if块需跟end if结束 sqlcode为错误码 sqlerrm为oracle反馈的错误信息 此程序输出:

代码语言:javascript
复制
-1400
ORA-01400: 无法将 NULL 插入 ("LABOR"."XLAND"."TITLE")

另外还有pragma exception_init(name,errcode)函数来处理非预定义异常 如:

代码语言:javascript
复制
declare 
v_exception exception;
pragma exception_init(v_exception,-1400);
begin
insert into labor.xland values(null,'1111',1);
exception
when no_data_found then
     dbms_output.put_line('没有找到数据');
when v_exception then
     dbms_output.put_line('没有找到数据1');
end;

这里提到了一个新的数据类型  exception pragma exception_init(name,errcode) 把错误号为-1400的错误赋值给v_exception 在第二个when子句中不能使用sqlcode等系统变量 三:自定义异常并抛出 先看代码

代码语言:javascript
复制
declare 
v_exception EXCEPTION;
begin
RAISE   v_exception;
exception
when v_exception then
   dbms_output.put_line('捕获异常');
end;

先定义一个异常 然后抛出这个异常 然后捕获这个异常 如此而已

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档