Ошибка синтаксического анализа XML-двоичных объектов в XMLType в oracle

#sql #oracle #blob #xmltype #character-set

#sql #Oracle #большой двоичный объект #xmltype #набор символов

Вопрос:

Я не могу преобразовать BLOB в XMLType в базе данных oracle. Я пробовал это:

 select
XMLType( BLOB_COLUMN,
         1 /* this is character set ID. 1 == USASCII | ISO-8859-2 char ID?*/
       ) as XML
from my_table;
  

Я получил это сообщение об ошибке:

 ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00200: could not convert from encoding US-ASCII to ISO-8859-2
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 265
ORA-06512: at line 1
31011. 00000 -  "XML parsing failed"
*Cause:    XML parser returned an error while trying to parse the document.
*Action:   Check if the document to be parsed is valid.
  

Мой вопрос в том, как преобразовать этот большой двоичный объект (ISO-8859-2) в XMLType?
Каков идентификатор символа ISO-8859-2?

Спасибо.

Ответ №1:

Используйте nls_charset_id для получения идентификатора:

 select
XMLType( BLOB_COLUMN,
         nls_charset_id('ISO-8859-2')
       ) as XML
from my_table;
  

NLS_CHARSET_ID возвращает идентификационный номер набора символов, соответствующий строке имени набора символов.

Ответ №2:

Вы можете получить идентификатор набора символов с nls_charset_id помощью функции.

Попробуйте это:

 select
XMLType( BLOB_COLUMN,
         nls_charset_id('EE8ISO8859P2')
   ) as XML
from my_table;
  

Комментарии:

1. Ответил то же самое, за 2 минуты до