-
а как надо?
-
Я ведь серьезно говорю, что опыт в Oracle у меня без году неделя. Кщд (11.08.13 14:35) [19], если знаешь более оптимальный вариант - подскажи новичку.
-
Так. Продолжаем ругать меня дальше, но ругать, желательно, конструктивно. Все эти запросы, собственно, важны для новичков, кто в оракл впервые работает с xml. Просьба ораколовским гуру, в случае, если им будет не лень указать на грубые просчеты или отсутствие оптимизации - подтолкнуть мою мысль в правильном направлении или просто показать, как надо. Итак, запрос на изменение значения уже существующего поля с сохранением форматирования структуры xml-документа в поле CLOB: UPDATE Table1 SET Query_Xml =
xmlserialize(document xmltype (UPDATEXML(XMLType(Query_Xml),
''/armcollection/NewApplication'/new_field',xmltype('<new_field attr1=\"1\"/>')).GetCLOBVal()) as clob indent)
where query_id= <условие выборки из Table1>;
Commit;
-
слишком много апострофов в верхнем запросе. Невнимательность моя при копировании. Извиняюсь. исправленный текст запроса: UPDATE Table1 SET Query_Xml =
xmlserialize(document xmltype (UPDATEXML(XMLType(Query_Xml),
'/armcollection/NewApplication/new_field',xmltype('<new_field attr1=\"1\"/>')).GetCLOBVal()) as clob indent)
where query_id= <условие выборки из Table1>;
Commit;
-
с сохранением форматирования
Зачем? Ты его глазами что ли в блокноте разглядываешь?
-
>cippership (12.08.13 08:56) [21] Вы знаете, что такое явное преобразование типов?
1. UPDATEXML - возвращает XMLTYPE; 2. getClobVal() - преобразует (1) в CLOB; 3. следующий за этим xmltype() - приведёт результат(из (2)) в XMLTYPE. Зачем впустую преобразовывать данные?
и, конечно, обратите внимание на "Обычный порошок (12.08.13 13:31) [24]": незачем хранить XML в отформатировнном виде. просто незачем.
-
Кщд (12.08.13 13:48) [25], действительно не здОрово. Но форматирование мне нужно. Точнее не мне - а заказчику. Он рассматривает xml, и возможно глазами в блокноте.. :)
-
>clippership (12.08.13 14:38) [26] "рассматривать" XML нужно спец. программами, коих несть числа при этом, в них можно отформатировать данные так, как нужно пользователю
и информация к размышлению: https://forums.oracle.com/thread/2565779 цитирую: "The trouble is this is formatted using the UNIX end of line marker, Line Feed = #10, even if Oracle is running under Window Server (windows uses Carriage Return + Line Feed = #13#10). This is causing problems when XML docs are delivered to users on Windows machines, who open it in notepad or similar - it means the data isn't visualised properly (not pretty printed)..."
-
Кщд , спасибо. Вот это, действительно, ценная информация.
-
>clippership (12.08.13 15:48) [28] Ваш заказчик рассматривает XML с помощью SQLPlus? сомневаюсь)
-
Наш заказчик рассматривает XML с помощью PL/SQL Developer, нажимая на соответствующую кнопку в ячейке clob-поля.
-
>clippership (13.08.13 08:56) [30] Ваш заказчик при просмотре может перейти на вкладку "XML", либо на вкладке "External" может определить любой другой инструмент для просмотра, в котором отформатирует XML так, как нужно именно ему
ещё раз: хранить XML в отформатированном виде - не вершина разумности
|