2016-11-10 144 views
0

我有一個XML SQL語句,我正在使用(請參閱下面的Oracle11g SQL)來克服傳遞錯誤(下面),SQL語句可以工作,但它會脫離在REGEXP_REPLACE語句中沒有指定的字符,例如以下É Ë È需要包含在我的XML輸出文件中,我可以包含這些和更多,但有沒有簡短的內容來包含這些字符以及REGEXP_REPLACE而沒有命名爲long字符列表。我已經試過SQL select DBMS_XMLGEN.CONVERT(T.title),因爲我已經告訴過它會去掉所有無效的字符,但是失敗的原因與下面的解析錯誤相同。XML Oracle SQL字符集ORA-31011:XML解析失敗

我之所以使用REGEXP_REPLACE,是因爲它在標題數據庫字段中存在某些字符(例如char(160)無間斷空格)而失敗。

有沒有更簡單的解決方案,或者我必須在REGEXP_REPLACE中包含一長串字符。

在此先感謝。

DECLARE 
* 
ERROR at line: 
ORA-31011: XML parsing failed 
ORA-06512: at line 8 

麻煩的是,因爲我處理不同的字符

SELECT XMLAGG (XMLELEMENT ("referenceAvGroup",                
        XMLFOREST (cre_surr_id AS "societySeriesNumber", 
           'SERIES' AS "avGroupType"), 
          XMLELEMENT ("prodTitle",                 
           XMLFOREST (title AS "title", 
              tt_code_description AS "titleType") 
            )                   
          ) 
       )                  
FROM ( SELECT trim(REGEXP_REPLACE(T.title, '[^a-zA-Z0-9 ,[email protected]():.#’"*&+}/\©{ÂÀÃÏÎÔ܀ǿ%´_$()'',-`]', '', 1, 0, 'i')) AS title, 
       'ORIGINAL' AS tt_code_description, 
       T.tt_code AS tt_codes, 
       T.cre_surr_id 
     FROM titles T 
     WHERE T.tt_code = Com0300.title_type_registered) 
WHERE cre_surr_id = prod.prod_series_cre_surr_id 
+0

這可能是更容易維護要替換的字符的列表.. 。 – Shnugo

+1

您是否可以更新您的問題以包含複製您所看到的問題的示例數據? – Boneist

+0

該參數設置了什麼? SELECT * FROM V $ NLS_PARAMETERS where parametertrer = 'NLS_NCHAR_CONV_EXCP' –

回答

1

在我下面就剛剛結束的最新情況。似乎有很多控制字符已經從文件加載到數據庫中,導致我的SQL XML不能被解析。在使用下面的內容並刪除這些字符後,我的SQL XML運行良好。感謝您對此主題的所有建議。

REGEXP_REPLACE(更換(prod.CAMPAIGN_NAME,CHR(160), ''), '[[:CNTRL:]]')