当前位置:首页 » 存储配置 » 存储过程抛异常

存储过程抛异常

发布时间: 2022-12-12 09:45:49

‘壹’ java调用数据库存储过程抛出异常

是 from 吧? 你吧 在java中写的 sql 语句输出到控制台,然后再放到 数据库试试,有的时候在数据库能运行的,在java里不一定能运行。有可能是缺少空格,也有可能是eclipse的问题 .
你换一个语句 简单点的试试看。

‘贰’ 如何在sqlserver 的函数或存储过程中抛出异常

嵌套最里面的存储过程中RAISERROR抛出错误,然后在外层才能得到

‘叁’ oracle 存储过程中出现异常的处理

异常是执行这个存储过程出的异常吧,那就是说只有执行一次这个存储过程才会抛一次异常么?如果这样我建议你可以再写个存储过程来调用你这个存储过程,这样来记录异常的次数。然后再进行处理!

‘肆’ db2 存储过程 异常处理

存储过程异常的处理:
DECLARE handler-type HANDLER FOR condition handler-action

异常处理器类型(handler-type)有以下几种:
CONTINUE 在处理器操作完成之后,会继续执行产生这个异常语句之后的下一条语句。
EXIT 在处理器操作完成之后,存储过程会终止,并将控制返回给调用者。
UNDO 在处理器操作执行之前,DB2会回滚存储过程中执行的SQL操作。在处理器操作完成之后,存储过程会终止,并将控制返回给调用者。
异常处理器可以处理基于特定SQLSTATE值的定制异常,或者处理预定义异常的类。预定义的3种异常如下所示:
NOT FOUND 标识导致SQLCODE值为+100或者SQLSATE值为02000的异常。这个异常通常在SELECT没有返回行的时候出现。
SQLEXCEPTIOIN 标识导致SQLCODE值为负的异常。
SQLWARNING 标识导致警告异常或者导致+100以外的SQLCODE正值的异常。
如果产生了NOT FOUND 或者SQLWARNING异常,并且没有为这个异常定义异常处理器,那么就会忽略这个异常,并且将控制流转向下一个语句。如果产生了SQLEXCEPTION异常,并且没有为这个异常定义异常处理器,那么存储过程就会失败,并且会将控制流返回调用者。
以下示例声明了两个异常处理器。 EXIT处理器会在出现SQLEXCEPTION 或者SQLWARNING异常的时候被调用。EXIT处理器会在终止SQL程序之前,将名为stmt的变量设为"ABORTED",并且将控制流返回给调用者。UNDO处理器会将控制流返回给调用者之前,回滚存储过程体中已经完成的SQL操作。

清单3:异常处理器示例
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING SET stmt = 'ABORTED';
DECLARE UNDO HANDLER FOR NOT FOUND;
如果预定义异常集不能满足需求,就可以为特定的SQLSTATE值声明定制异常,然后再为这个定制异常声明处理器。语法如下:

清单4:定制异常处理器
DECLARE unique-name CONDITION FOR SQLSATE 'sqlstate'
处理器可以由单独的存储过程语句定义,也可以使用由BEGIN…END块界定的复合语句定义。注意在执行符合语句的时候,SQLSATE和SQLCODE的值会被改变,如果需要保留异常前的SQLSATE和SQLCODE,就需要在执行复合语句的第一个语句把SQLSATE和SQLCODE赋予本地变量或参数。
通常,会为存储过程定义一个执行状态的输出参数(例如:poGenStatus)。
declare sqlcode integer default 0;
begin
declare continue handler for sqlexception set ret = sqlcode;
declare continue handler for sqlwarning set ret = sqlcode;
declare continue handler for not found set ret = sqlcode;
end ; --异常的声明

--异常的处理
if sqlcode< 0 or sqlcode= 100 then
set O_RetCod = RetCode;
set O_RetMsg = 'CLN02:产品实例关联客户过程出错!';
insert into LOG.OPER_LOG_TAB(PROC_NAME,OBJ_TAB,REGION_COD,OPER_COUNT,ERR_CODE,DATA_TIME,OPER_TIME)
values('P_DW_CLEAN','GLOBAL TEMP',0,0,retcode,CHAR(last_3_mon_time),current TIMESTAMP);
return;
else
set RetCode = 0;
end if;

‘伍’ oracle存储过程中遇到主键冲突会抛出异常还是继续执行

分情况操作,如果是循环入库的话,抛异常时判断是否是主键冲突,然后继续继续执行下一条继续进行添加操作,如果是单个数据入库直接抛异常

‘陆’ Oracle 存储过程怎么抛出异常

你说的异常是什么意思?如果是,执行中的错误,那么可以用“调试”,不过需要有一个系统权限的拥护才能调试,权限好象是什么debug XXXXX。
如果说的是有时执行因为这样那样的数据问题出现的异常,那么一般都是通过exception来抛出异常的,这样的抛出的异常,你可以自己编代码,然后输入一张表内,这样就可以捕获异常了。如果1表示没有主键,2表示数据超长等等。具体的写法网上很多,这里就不写了。

‘柒’ 如何在sqlserver 的函数或存储过程中抛出异常

declare@infovarchar(10)
set@info='test'
RAISERROR('库存不足:商品编号:%s,当前库存,现登记例出数!',16,1,@info)

采用这种方法就可以模拟报错

‘捌’ 在调用存储过程的时候抛出的异常 为参数或存储过程添加了过多参数是什么情况

就是说你调用存储过程的时候传递的参数,比定义的形参个数多。
比如说有个过程A有3个形参,你却传了4个实参过去。多出来的部分无法接受,就会抛异常。
所以调用的时候要注意,参数的个数,类型,和顺序。

‘玖’ 如何让存储过程抛出异常

你说的异常是什么意思?如果是,执行中的错误,那么可以用“调试”,不过需要有一个系统权限的拥护才能调试,权限好象是什么debug XXXXX。 如果说的是有时执行因为这样那样的数据问题出现的异常,那么一般都是通过exception来抛出异常的,这样的抛出的异常,你可以自己编代码,然后输入一张表内,这样就可以捕获异常了。如果1表示没有主键,2表示数据超长等等。具体的写法网上很多,这里就不写了。

‘拾’ 存储过程触发异常后可不可以继续执行

把可能抛出异常的部分另外写一个单独的过程。
并且是具备异常处理能力的,如果你不想作什么处理,可以在when others then下面写一个null;就可以了。
这样异常发生时,在本过程内就处理掉了,异常没有被传播(就是抛到调用者那里)。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:600
制作脚本网站 发布:2025-10-20 08:17:34 浏览:892
python中的init方法 发布:2025-10-20 08:17:33 浏览:586
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:771
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:690
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1017
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:261
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:120
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:810
python股票数据获取 发布:2025-10-20 07:39:44 浏览:719