2

私は受け取ります:

  • ORA-31011:XML解析に失敗しました
  • ORA-19202:XML処理でエラーが発生しました
  • LPX-00230:名前またはヌル文字に無効な文字0(U + 0000)が見つかりました
  • 2行目のエラー
  • ORA-06512:「SYS.XMLTYPE」の254行目
  • ORA-06512:1行目

実行しようとすると:

select extractValue(
  XMLType(
    replace(myxmlcolumn,CHR(0),''
    )
  ), '/xpath/to/data'
)
foo,bar,foobar
from sch.tab 

WHERE cond='cond'

「myxmlcolumn」はもちろんCLOBデータ型ですが、XMLが含まれています。NULLでreplace()を実行していなかった場合、このエラーは意味があります。それとエラーは断続的です(おそらく私の句の一致に起こります)。XMLキャストの前にnullを置き換える必要がある場合、nullはどのように報告されますか?

10g Enterprise Editionリリース10.2.0.5.0、Toad for Oracle pro 10.6.1.3

編集:-また、NULLが挿入されていないことを証明するために「H」に置き換えようとしました(同じエラー)-chr(0が気に入らなかった場合はreplace(myxmlcolumn、'\ n'、'')も試みました)(同じエラー)

4

2 に答える 2

2

My Oracle Support で を検索してLPX-00230ください。これは Bug 9871430 のようです。

(詳細を投稿したいのですが、そのサイトからの情報を共有することになっているとは思いません。)

于 2012-04-26T03:42:15.667 に答える
1

これはエレガントな解決策ではなく、少し汚れているように感じます。@jonearlesの回答から、既知のバグのようです。簡単な解決策は、XML へのキャストすら試みないことです。うまくいけば、高度な xpath は必要ありませんでしたが、私の場合は必要ありませんでした。

Select dbms_lob.substr(myxmlcolumn, 10, dbms_lob.instr(myxmlcolumn,'<data>') + 6)  

「データ」は私が求めていた要素であり、常に10の長さの値を保持し、要素の最初で唯一の出現であるため...幸運でした.

于 2012-04-26T20:53:35.930 に答える