网站建设资讯

NEWS

网站建设资讯

如何捕捉oracle错误 oracle 异常捕捉

Oracle怎么捕获ora-00942的异常

不知道你想在什么环境下捕获,不知道你说的SQL是怎么捕获,或者你说的是脚本?

成都创新互联专注于网站建设|网页维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖岗亭等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身策划品质网站。

如果是在存储过程中捕获

有两个思路吧,

1、直接使用普通的异常处理,获取异常的代码,匹配是否为00942,然后就捕获到这个异常。

2、自定义异常处理,使用数据字典,首先查询数据字典中是否存在这表,如果不存在,就产生一个自定义的异常,在这个异常里你做处理。

------------------------------------------------------------------------------------

declare

myexception exception;

--表个数

v_num integer :=0;

begin

--查询表名为MY_USER表个数

SELECT count(*) into v_num FROM tabs WHERE table_name = 'MY_USER'

if v_num=0 then

raise myexception;

end if;

exception

when myexception then

raise_application_error(20001,'my exception happens');

when others then

raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

end

----------------------------------------------------------------------------------------

伪代码,你可以嵌到你的存储过程中去使用。

怎样捕捉oracle错误号

sqlcode,但是你如果是一个事务批量commit的话,在重复时会报错rollback的,除非你是一条条提交

Oracle 如何捕获异常信息

一般写在存储过程处理异常。

exception

when others then

out_mes:=out_mes || '执行失败!因为'|| sqlcode || '错误' ;

out_mes你自己可以处理,插入日志表中 或作为输出参数。

oracle如何捕获存储过程报错是哪一行

如果数据库是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),这个函数能够返回错误行,可以套用以下格式:

create or replace procedure prc_test(参数) is

v_no number;

begin

select no into v_no from zrp;

exception

when others then

dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||

sqlerrm||chr(10)||

dbms_utility.format_error_backtrace());

end;

这样写的好处是,当程序发成异常,呗exception捕获后,就会打印出错误信息及发生错误的行号


分享名称:如何捕捉oracle错误 oracle 异常捕捉
当前路径:http://cdweb.net/article/hiphsj.html