Конференция "Базы" » Oracle и редактирование XML в CLOB-поле
 
  • cippership (12.08.13 08:54) [20]
    а как надо?
  • cippership (12.08.13 08:56) [21]
    Я ведь серьезно говорю, что опыт в Oracle у меня без году неделя.
    Кщд   (11.08.13 14:35) [19], если знаешь более оптимальный вариант - подскажи новичку.
  • clippership (12.08.13 10:09) [22]
    Так. Продолжаем ругать меня дальше, но ругать, желательно, конструктивно.
    Все эти запросы, собственно, важны для новичков, кто в оракл впервые работает с 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;

  • clippership (12.08.13 10:11) [23]
    слишком много апострофов в верхнем запросе. Невнимательность моя при копировании. Извиняюсь. исправленный текст запроса:
    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;

  • Обычный порошок (12.08.13 13:31) [24]
    с сохранением форматирования

    Зачем?
    Ты его глазами что ли в блокноте разглядываешь?
  • Кщд (12.08.13 13:48) [25]
    >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 в отформатировнном виде. просто незачем.
  • clippership (12.08.13 14:38) [26]
    Кщд   (12.08.13 13:48) [25], действительно не здОрово.
    Но форматирование мне нужно. Точнее не мне - а заказчику. Он рассматривает xml, и возможно глазами в блокноте.. :)
  • Кщд (12.08.13 15:40) [27]
    >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]
    Кщд , спасибо. Вот это, действительно, ценная информация.
  • Кщд (12.08.13 19:24) [29]
    >clippership   (12.08.13 15:48) [28]
    Ваш заказчик рассматривает XML с помощью SQLPlus?
    сомневаюсь)
  • clippership (13.08.13 08:56) [30]
    Наш заказчик рассматривает XML с помощью PL/SQL Developer, нажимая на соответствующую кнопку в ячейке clob-поля.
  • Кщд (13.08.13 09:38) [31]
    >clippership   (13.08.13 08:56) [30]
    Ваш заказчик при просмотре может перейти на вкладку "XML", либо на вкладке "External" может определить любой другой инструмент для просмотра, в котором отформатирует XML так, как нужно именно ему

    ещё раз: хранить XML в отформатированном виде - не вершина разумности
 
Конференция "Базы" » Oracle и редактирование XML в CLOB-поле
Есть новые Нет новых   [119795   +111][b:0][p:0.001]