1

xmltype 関数と xpath を使用して clob から値を抽出する oracle db でクエリを使用しています。残念ながら、クエリは失敗し、「XML 解析に失敗しました」と報告されます。clob 内の文字列の 1 つが有効な XML ではないと仮定します。影響を受ける行を特定する方法

4

1 に答える 1

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 に答える