gpt4 book ai didi

sql - 在进行游标提取时,如何判断哪个记录导致错误?

转载 作者:行者123 更新时间:2023-12-01 11:05:07 26 4
gpt4 key购买 nike

在进行游标提取时,有什么方法可以判断是哪条记录导致了错误?例如,假设我有一个包含一列 (varchar2) 的表,“值”,具有以下值:

1,2、3、4、G,5、6

我做了以下事情:

DECLARE
answer number;
CURSOR c1 IS
SELECT to_number(value) FROM table;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO answer;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(answer);
END LOOP;
CLOSE c1;
EXCEPTION WHEN invalid_number THEN
dbms_output.put_line('an invalid number exception was encountered');
END;

它会在遇到“g”之前毫无问题地输出吗?这是我正在尝试调试的真实问题的一个简单示例。在实际示例中,它只输出异常消息,不输出任何其他内容。这是否意味着它是导致问题的第一条记录,或者它只是不以这种方式工作?

最佳答案

它应该输出值,直到遇到异常的行,至少根据我对您的程序的测试。也就是说,除非您在查询中执行 ORDER BY,在这种情况下,您可能会在获取任何行之前看到异常。

您可以通过在选择中不使用 TO_NUMBER 函数的情况下尝试自己查看正在获取的内容。这样的事情可能会有所帮助:

DECLARE
answer number;
temp VARCHAR2(10);
CURSOR c1 IS
SELECT ID FROM table;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO temp;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT(temp||': Converted is: ');
dbms_output.put_line(to_number(temp));
END LOOP;
CLOSE c1;
EXCEPTION WHEN invalid_number THEN
dbms_output.put_line('an invalid number exception was encountered');
WHEN OTHERS THEN
dbms_output.put_line('Some other error');
END;
/

关于sql - 在进行游标提取时,如何判断哪个记录导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684426/

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