2012-04-25 664 views
2

我收到:LPX-00230:無效字符0(U + 0000)在發現名稱或包含的Nmtoken

  • ORA-31011:XML解析失敗
  • ORA-19202:發生在XML處理
  • 錯誤
  • LPX-00230:無效字符在一個名稱或包含的Nmtoken結果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?

10g企業版發佈10.2.0.5.0,蟾蜍爲Oracle親10.6.1.3

編輯: - 也試圖與「H」,以證明它不是在插入空回替換(同樣的錯誤) - 也嘗試更換(myxmlcolumn, '\ n', '' 的情況下,它並沒有像CHR(0)(同樣的錯誤)

回答

1

這不是一個優雅的解決方案,我覺得有點骯髒。從@jonearles回答它看起來像一個已知的bug。簡單的解決方案是不是甚至試圖轉換爲XML。希望沒有需要先進的xpath,在我的情況下不是。

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

「數據」是我追的元素,它發生,始終保持一個值是10長,並且是元素的第一個也是唯一出現這樣......我真的很幸運。

1

搜尋我的Oracle支持LPX-00230,這看起來像臭蟲9871430.

(我會發布更多細節,但我認爲我們不應該分享該網站的信息。)

+0

我不認爲你可以建議任何形式的*咳嗽*解決方法或至少是錯誤的原因?是否有某種最佳做法,或至少是「避免這樣做」的博客,這不需要企業支持合同?我只是一個簡單的承包商。 – slipsec 2012-04-26 15:12:32

+0

我想我必須相信你,才能給你一個滿意的答卷。當然希望我能看到幕後。 – slipsec 2012-04-26 20:49:50

相關問題