首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DB2存储过程退出处理程序传播默认SQL异常

从DB2存储过程退出处理程序传播默认SQL异常
EN

Stack Overflow用户
提问于 2015-08-14 17:26:10
回答 2查看 872关注 0票数 0

我有一个使用全局临时表的存储过程。我定义了一个退出处理程序,这样如果过程中的任何地方发生异常,全局表就会被删除。

代码语言:javascript
复制
DECLARE EXIT HANDLER FOR SQLEXCEPTION drop table SESSION.TEMP_ODI_ID_TABLE;

此退出处理程序正确地捕获SQL异常,并根据需要删除全局表。但是,SQL异常不会传播,并且我的Java代码不会像没有显式定义退出处理程序时那样捕获SQL异常。我想知道如何更改退出处理程序以删除临时表,同时仍然返回SQL异常,该异常可以由JDBC代码中的catch语句拾取。

谢谢

利亚姆

EN

回答 2

Stack Overflow用户

发布于 2015-08-14 17:41:24

您可以尝试将SIGNAL语句作为退出处理程序的一部分嵌入。这样,您还可以对捕获的SQL异常做出反应。这是指向SIGNAL statement的链接。‘SIGNAL`用于在存储过程中引发错误,例如,您的应用程序可以向应用程序发出检测到的问题的信号,而不会实际遇到SQL错误。

票数 2
EN

Stack Overflow用户

发布于 2015-08-18 18:09:58

我已经通过使用RESIGNAL解决了我的问题,这样SQL异常在被出口处理程序捕获后被传播。我还将实现一些动态SQL,以便RESIGNAL返回我的过程捕获异常的点。我现在申请的“快速”解决方案是:

代码语言:javascript
复制
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
drop table SESSION.TEMP_ODI_ID_TABLE;
RESIGNAL;
END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32006707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档