Ошибки Oracle CLOB to XMLTYPE

У нас более старый сервер Oracle, 10.1.0.5... да, мы скоро обновимся. Вот некоторые важные настройки NLS:

  • NLS_CHARACTERSET IS 'US7ASCII'
  • NLS_LENGTH_SEMANTICS - "БАЙТ"

На вопрос... Мы хорошо сформировали XML, хранящийся в столбцах CLOB. При попытке получить данные элемента XML я использую такой синтаксис, как

select XMLTYPE(I.CLOBFIELD).EXTRACT('/Record/RecordID/text()') as Record_ID
from iTable I

Где I.CLOBFIELD - это CLOB, содержащий некоторый XML.

Обычно это прекрасно работает.

Иногда мы получаем ошибку, когда данные CLOB содержат не-ascii данные, которые были закодированы с использованием "& # xxxx;".

Например, если следующий текст

... "нарушение"...

были найдены где-нибудь в CLOB Я бы получил вышеупомянутую ошибку при выполнении этого запроса.

Левая кавычка - x201C, а правая - x201D, они сохраняются как простые ascii в xml как & # x201C и & # x201D, соответственно.

Такая пунктуация проникла в наши поля CLOB (в основном от пользователей, вырезавших и вставляющих из ms-word). В какой-то момент мы их очистим, возможно, при переносе, но сейчас нам хотелось бы, чтобы вышеуказанный запрос всегда работал, даже когда эти эквиваленты Unicode находятся в CLOB.

Примечание. Я бы использовал XMLTABLE(..), если бы мог, но он недоступен в этой редакции Oracle.

Предложения или альтернативы XMLTYPE будут приветствоваться.

Спасибо,

ссе

0 ответов

Другие вопросы по тегам