强制 Oracle 在获取时出错

2024-03-12

我正在尝试调试应用程序中的奇怪行为。为了做到这一点,我需要重现一个场景,其中 SQL SELECT 查询将抛出错误,但仅在实际从游标获取时,not在执行查询本身时。这可以做到吗?任何错误都会发生,但是ORA-01722: invalid number似乎是显而易见的尝试。

我创建了一个包含以下内容的表:

KEYCOL INTEGER PRIMARY KEY
OTHERCOL VARCHAR2(100)

然后,我创建了数百行,其中主键和值具有唯一值l为了othercol。然后我运行一个 SELECT * 查询,在中间某处选择一行,并将其更新为字符串abcd。我运行了查询SELECT KEYCOL, TO_NUMBER(OTHERCOL) FROM SOMETABLE希望获得一些好的数据行,然后出现错误。但我不断得到ORA-01722: invalid number在执行步骤本身。

我已经使用 ADO(带有服务器端游标)和 JDBC 以及 PL/SQL Developer 以编程方式获得了此行为。我怎样才能得到我想要的结果?谢谢

编辑-意味着添加,当使用ADO时,我只是调用Command.Execute。我没有创建或打开记录集。


可能是它正在选择一个非常大的批次(例如 1000)。 可能是,当您进行更新时,由于某种原因该行很早就被拾取了。

不确定这是否有任何帮助,但您可以从管道表函数中进行选择,这可以让您更精确地控制是否以及何时返回错误。

create or replace function ret_err return sys.dbms_debug_vc2coll pipelined is
begin
   for i in 1..200 loop
      pipe row ('test');
   end loop;
   raise_application_error (-20001,'Error here');
   return;
end;
/

select * from table(ret_err);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制 Oracle 在获取时出错 的相关文章

随机推荐