| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Преобразование CLOB -> XMLType |
| Автор: Plamenk 4.7.2005, 11:11 | ||||
| Всем Привет! Наткнулся на очень странную ошибку, при преобразовании CLOB -> XMLType в Oracle9i. У меня есть ХП, куда передается CLOB, который преобразуется следующим кодом в XMLType
Это преобразование иногда работает нормально, а иногда вылетает (так происходит ошибка, когда XML больше 32KB). И что самое интересное - это лечится следующим кодом
Вопрос: Как решить эту проблему без использования преведенного выше кода? И из-за чего может возникать данная ошибка? Заранее Все БОЛЬШОЕ СПАСИБО! |
| Автор: VIAcom 4.7.2005, 16:02 |
| Plamenk О у меня была походу такая проблема но когда я читал из CLOB в файл. Собственно это связано с тем, что видимо нельзя обработать сразу весь LOB, а делать это надо по кусочкам не знаю чем вызвано ограничение именно в 1/2 сегмента - Length:=32767; не уверен, но надеюсь что поможет ... ... нет почти наверняка не поможет |
| Автор: LSD 4.7.2005, 20:19 | ||
Это скорее ограничение не 1/2 сегмента, а длинны VARCHAR2 в PL/SQL. Plamenk Я полагаю надо работать через DBMS_LOB.CREATETEMPORARY, хотелось бы посмотреть весь код процедуры. |
| Автор: Plamenk 5.7.2005, 08:05 | ||
| Спасибо за ответы! Привожу полный текст процедуры: В данном варианте она всегда нормально отрабатывает, но на мой взгляд должен быть более простой способ преобразования CLOB в XMLType:
|
| Автор: smolbars 23.10.2005, 13:26 |
| А как победить подобную же проблему если использовать не dom а xsu и надо перегонять xml в файл а то у меня строки километровые http://forum.vingrad.ru/index.php?showtopic=67235 там описано в чем проблема В принципе (и без принципа тоже) это та же проблема что и у VIAcom Но что то по кускам у меня не получается - может за это время VIAcom нашел решение Я конечно написал альтернативный вариант на delphi но с клиентского мется меня как-то не плющит такое делать - просто время поджимало Может кто подскажет как обойти это ограничение 32767 |
| Автор: Кану 2.11.2005, 08:39 | ||
Как вариант такой обход:
где ttt - понятно что, а ааа - clob храняший наши данные, но не желающий вернуть их целиком. "ааа" создавался так же, как и ttt с помощью createtemporary. Я интереса ради передал там 8 метров. В принципе все это дело работает, но вопрос - насколько нужен такой объем инфы... Для получения данных всетаки, больше подойдет считывание по кускам, если нет желания заставить комп подавиться обилием инфы. Пробуйте. |