Единственное разумное решение, которое я нашел, было исправить содержимое в источнике.

ершенно новичок в XDB от Oracle, в частности использую его для генерации вывода XML из таблицы базы данных, и работаю над приложением, которое перемещается с 9i (Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production) на 11g (Oracle База данных 11g Enterprise Edition, выпуск 11.2.0.2.0 - 64-разрядная версия). Вот небольшой тестовый пример, который иллюстрирует мою проблему:

select xmlelement("test", test) from (select 'a' test from dual);

Это работает и дает мне:

<test>a</test>

Однако в 11g, если я поменяю 'a' на недопустимый символ, такой как U + 0013, я получу следующую ошибку:

ORA-31061: XDB error: special char to escaped char conversion failed.

Под 9i тоже самое работает успешно, без ошибок.

Очевидно, что идеальный ответ - иметь некоторую проверку для предотвращения попадания управляющих символов в простые символьные данные, которые я пытаюсь преобразовать в XML, но, к сожалению, это выходит за рамки того, что я делаю.

Испытывает ли это кто-то еще, и если да, то могу ли я внести простое изменение в свой сценарий создания XML или мне нужно выполнить какой-то другой вид очистки? Или просто вручную исправить проблему в тех редких случаях, когда это происходит (что было бы вполне разумным вариантом для моих нужд).

Большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос