
正文
oracle存储过程异常信息,oracle存储过程停不下来
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle怎么获取exception信息
EXCEPTION_INIT告诉编译器将异常名 与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。
直接使用普通的异常处理,获取异常的代码,匹配是否为00942,然后就捕获到这个异常。自定义异常处理,使用数据字典,首先查询数据字典中是否存在这表,如果不存在,就产生一个自定义的异常,在这个异常里你做处理。
可以先定义个变量,发生异常的时候将异常信息赋值给变量,插入表的时候用变量,日志表没给表结构,我自己重新定义了一个,测试ok。
这种情况我遇到过,可能的原因是表A和表B中对应字段的数据值类型不同,建议检查一下。
出现异常,会自动回滚,不用为了回滚而捕获异常 如需要对异常进行处理,可参考以下异常捕获逻辑 begin--代码处理逻辑。。exceptionwhen no_data_found then--no_data_found异常处理。。
相关问答
Q1: oracle老是报一个存储过程sperror
1、首先打开PL/SQL Developer软件,新建sql窗口。打开修改oracle存储过程,该存储过程有一个输入参数(pid)跟一个输出参数(name),即通过用户id查询用户名称并将名称返回。
2、说明 这个SP_ADDEXTENDEDPROC存储过程 你调用错误,确认是owner.SP_ADDEXTENDEDPROC没有出现错误。以及SP_ADDEXTENDEDPROC是否存在以及你是否具有相关权限。
3、创建包体的时候可能有问题,你把包体里面的内容贴出来。
4、如果SYS.FEIYONG是个表什么的,就要看你当前用户是否有访问这个对象的权限,如果是个调用的存储过程,看看这个存储过程是不是能运行正确。
Q2: oracle存储过程异常怎么写
1、可以先定义个变量,发生异常的时候将异常信息赋值给变量,插入表的时候用变量,日志表没给表结构,我自己重新定义了一个,测试ok。
2、行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体。 行3: BEGIN关键词表明PL/SQL体的开始。
3、那么一般都是通过exception来抛出异常的,这样的抛出的异常,你可以自己编代码,然后输入一张表内,这样就可以捕获异常了。如果1表示没有主键,2表示数据超长等等。具体的写法网上很多,这里就不写了。
4、可用第三方工具检查错误。如以下存储过程:其中第六行故意少写了一个分号。然后执行后,会提示完成,这时可以去左边的树中找到这个存储过程,显示是有个红叉的。这时,可以右键,选择编辑。
5、NULL 当没有数据时,抛出空值 RAISE 是用来抛出异常的,没带参数的如你上面的这种,就是将当前的异常传到外部程序。
Q3: oracle怎么获取exception信息?
1、EXCEPTION_INIT告诉编译器将异常名 与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。
2、直接使用普通的异常处理,获取异常的代码,匹配是否为00942,然后就捕获到这个异常。自定义异常处理,使用数据字典,首先查询数据字典中是否存在这表,如果不存在,就产生一个自定义的异常,在这个异常里你做处理。
3、这种情况我遇到过,可能的原因是表A和表B中对应字段的数据值类型不同,建议检查一下。
4、可以先定义个变量,发生异常的时候将异常信息赋值给变量,插入表的时候用变量,日志表没给表结构,我自己重新定义了一个,测试ok。
5、出现异常,会自动回滚,不用为了回滚而捕获异常 如需要对异常进行处理,可参考以下异常捕获逻辑 begin--代码处理逻辑。。exceptionwhen no_data_found then--no_data_found异常处理。。
关于oracle存储过程异常信息和oracle存储过程停不下来的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







