Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка конвертирования при распарсивании XML-поля  [new]
Mladov Alexey
Member

Откуда:
Сообщений: 54
Доброго времени суток.

С ORACLE знаком достаточно поверхностно.

Есть ORACLE, версия: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
Платформа - Windows 2003 32-bit

SELECT * FROM nls_database_parameters
Выдает:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 9.2.0.1.0

В базе есть таблица с двумя полями id(numeric) и content(xmltype)
В таблице несколько десятков записей. Средний размер xml-поля - около 30кб.

Мне надо получить некоторые данные из xml-поля.

Запрос вида
select t1.id,
       substr(extractvalue(value(t2), '/*/@id'), 1, 48) as value_id,
       substr(extractvalue(value(t2), '/*/@name'), 1, 50) as value_code,
       substr(extractvalue(value(t2), '/*/@label'), 1, 50) as value_name
 from table_content t1,
      table(xmlsequence(extract(t1.content,'//*'))) t2
where t1.id = 1
на одной записи нормально отрабатывает.

На остальных валится с ошибкой:
ORA-31011: сбой разбора XML
ORA-19202: Возникла ошибка при обработке XML
LPX-00200: could not convert from encoding UTF-8 to UCS2
Error at line 1
ORA-06512: на "SYS.XMLSEQ_IMP_T", line 7
ORA-06512: на "SYS.XMLSEQ_IMP_T", line 7

Пробовал
select t1.id, t2.*
 from table_content t1,
      table(xmlsequence(extract(xmltype(convert(t1.content, 'UTF8', 'AL32UTF8')),'//*'))) t2
where t1.id = 1
валится с ошибкой:
ORA-00600: код внутр. ошибки, аргументы: [kghsccread1], [8000], [4000], [], [], [], [], []

Пробовал xml-поле конвертить в clob - выпадает LPX-00200: could not convert from encoding UTF-8 to UCS2

Что делать ума не приложу. 8(
google за последние несколько дней заюзал до дыр. Ничего не получается. 8((

Очень не хочется руками распарсивать кучу xml...

Помогите, пожалуйста.
31 май 11, 11:54    [10737474]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить