【发布时间】:2010-10-31 00:04:39
【问题描述】:
(Oracle PL/SQL)
如果我有一个抛出错误的简单 SQL 语句,即:
DECLARE
v_sql_errm varchar2(2048);
BEGIN
UPDATE my_table SET my_column = do_something(my_column)
WHERE my_column IS NOT NULL;
EXCEPTION
when others then
-- How can I obtain the row/value causing the error (unknown)?
v_sql_errm := SQLERRM;
insert into log_error (msg) values ('Error updating value (unknown): '||
v_sql_errm);
END;
异常块中是否有任何方法可以确定查询遇到错误的行/值?我希望能够记录它,以便我可以进入并修改/更正导致错误的特定数据值。
【问题讨论】:
-
根据下面的答案,似乎没有办法确定导致错误的实际行/值。最好的解决方案似乎是使用 FOR 循环进行迭代。
标签: oracle exception error-handling plsql