2012-07-18 176 views
1

我在使用xmltype函數和xpath從clobs提取值的oracle數據庫上使用查詢。不幸的是,查詢失敗並報告「XML解析失敗」。我假設clob中的一個字符串不是有效的XML。如何確定哪一行受到影響?Oracle解析失敗

+0

我添加了rownum到原來的查詢和解析失敗的錯誤簡單地消失... – paweloque 2012-07-18 15:11:34

回答

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; 

如果你以更直接的方式絆倒,請讓我知道。

+0

有趣的是,添加rownum查詢實際上解決了這個問題....但是爲什麼?' – paweloque 2012-07-18 15:10:49

+0

@lewap很難說沒有看到實際查詢和錯誤消息 – Hugo 2012-07-19 07:54:28