我在 oracle db 上使用查询,它使用 xmltype 函数和 xpath 从 clob 中提取值。不幸的是,查询失败并报告“XML Parsing failed”。我假设 clob 中的字符串之一不是有效的 XML。如何确定受影响的行?
问问题
1062 次
1 回答
1
一种解决方案是对一小部分数据执行查询,并通过添加类似于以下的条件来慢慢减少记录数量:
AND id BETWEEN 20 AND 2000
另一种方法是使用如下游标一个接一个地获取记录:
DECLARE
CURSOR cur IS
/* Your SQL goes here */
SELECT * FROM xx_invalid_row_t;
table_row xx_invalid_row_t%ROWTYPE; /* change the table name*/
row_count NUMBER :=0;
BEGIN
OPEN cur;
LOOP
row_count := row_count + 1;
FETCH cur INTO table_row;
IF cur%NOTFOUND THEN
EXIT;
END IF;
END LOOP;
CLOSE cur;
dbms_output.put_line('No errors here');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error on row '||row_count||' with message: '|| sqlerrm);
dbms_output.put_line('Last successfully fetched row has the id:'||table_row.id);
END;
如果您偶然发现更直接的方式,请告诉我。
于 2012-07-18T14:18:47.980 回答