gpt4 book ai didi

sql - 强制 Oracle 在获取时出错

转载 作者:行者123 更新时间:2023-12-04 21:55:13 24 4
gpt4 key购买 nike

我正在尝试调试应用程序中的奇怪行为。为了做到这一点,我需要重现一个场景,其中 SQL SELECT 查询将抛出错误,但仅在实际从游标获取时抛出错误,而不是在执行查询本身时。这可以做到吗?任何错误都可以,但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);

关于sql - 强制 Oracle 在获取时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com