В предыдущей публикации были рассмотрены некоторые приёмы манипуляции с XML в Oracle, теперь рассмотрим как делать выборку данных напрямую в XML. Это на мой взгляд самая интересная часть.
На практике выяснилось, что для Oracle в большинстве случаев не существенно, вернуть ли набор записей или сформированную готовую XML этого набора записей — по времени выполнения эти действия субъективно практически равноценны. Но вот если у вас есть потребность в формировании некоторой XML структуры в приложении на основе данных полученных из БД Oracle, практически наверняка это будет довольно ресурсоемкое мероприятие, гораздо легче переложить этот функционал на базу данных, хотя на первый взгляд и кажется что это не то, чем должен заниматься движок базы данных.
В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую.
Здесь будут рассмотрены на примерах такие операторы и функции как: XMLType, XMLElement, xmlattributes, XMLAGG, XMLSequence, insertchildxml, xmlconcat.
Итак начнем с объявления переменной в которой будем хранить текст XML.
Делается это так:
declare
--Задаем переменную
my_var XMLType;
begin
--Присваиваем значение нашей переменной
my_var:= XMLType('<root><item>Просто пробуем XML в Oracle</item></root>');
--Выводим в вывод
dbms_output.put_line(my_var.GetClobVal());
end;
Для начала рассмотрим некоторые приёмы работы с XML, чуть позже перейдем к генерации XML из данных при выборке.