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

Откуда: Екатеринодар
Сообщений: 1439
Есть простая xml-ка, вида:

<SETS>
<SET>
<TEST_COLUMN1>text</TEST_COLUMN1>
...
<TEST_COLUMNn>text</TEST_COLUMNn>
</SET>
...
</SETS>

Размер ее может достигать 2 Мб.

Есть код, который с помощью DBMS_XMLSTORE лихо парсит ее сразу в табличку (1-2 с).

И все вроде хорошо, до тех пор, пока данные в xml соответствуют типу данных полей в этой таблице.
Если хотя бы в одном теге дата не в том формате, строка длиннее (или еще что), то получаю эксепшн и весь парсинг накрывается.

Как решить проблему?

Можно ли как-нибудь заставить DBMS_XMLSTORE например использовать insert error logging? Чтобы не было эксепшена, а ошибки можно было обработать потом из таблицы-лога.

Пробовал делать insert-select, распарсив xmltable'ом и включив логирование ошибок - все норм, но гораздо медленнее (раз в 15) получается.
2 апр 15, 20:25    [17466559]     Ответить | Цитировать Сообщить модератору
 Re: DBMS_XMLSTORE - обработка ошибок при парсинге  [new]
init.ora
Member

Откуда: гетто
Сообщений: 317
Максим Н,

может стоит посмотреть в сторону dbms_xslprocessor ?
2 апр 15, 22:34    [17466951]     Ответить | Цитировать Сообщить модератору
 Re: DBMS_XMLSTORE - обработка ошибок при парсинге  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
Попробую натравить DBMS_XMLSTORE на вьюшку, и ловить с помощью instead of триггера
3 апр 15, 09:20    [17467573]     Ответить | Цитировать Сообщить модератору
 Re: DBMS_XMLSTORE - обработка ошибок при парсинге  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
Получилось, тот же результат, но ошибки парсинга/вставки записываются в error-таблицу.

Теперь проблема такая: как из log error таблицы получить имя поля, на котором произошла ошибка? Например в ORA_ERR_TAG$. В тексте сообщения (ORA_ERR_MESG$) само собой название колонки не всегда будет присутствовать.
3 апр 15, 11:53    [17468528]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить