我正在尝试调试应用程序中的奇怪行为。为了做到这一点,我需要重现一个场景,其中 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(使用前将#替换为@)