【发布时间】:2011-07-13 13:29:42
【问题描述】:
我有一种情况,我维护的站点调用 plsql 包/过程 (Oracle 11g)。该过程使用传入的参数(称为字符串“v_select”)构建动态sql字符串。构建字符串后,使用 v_select 动态 sql 字符串打开一个引用游标。伪代码如下。
OPEN ref_cursor FOR v_select
USING variables set to input parameters ;
现在,该过程有一个异常块(WHEN OTHERS)来捕获任何异常。在异常块中,任何错误都将写入 DB 中的表。执行动态sql时发生错误时,异常块似乎没有捕获到错误(错误表中没有插入任何条目),但是我可以在.net级别看到错误,所以我知道这是一个 Oracle invalid_number 错误。
所以,最后,我的问题是......从我在网上看到的(这并不多),如果动态 sql 阻塞,这应该被异常块捕获。它是否正确?
【问题讨论】: