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

Откуда:
Сообщений: 209
Дорогой ALL!

В MSSQL применяется очень удобный способ назначения имен тегов и атрибутов при форматировании результата select
Причем, в одном запросе легко можно собирать самые разные данные: статические, из таблиц и тп
Например, такой запрос:
use msdb
go

select 
	getdate() as simple_date,
(
	select 'Simple XML from MSSQL' as header for xml path('example'), type
),
(
	select 
	(
		select 
			id as 'name/@id',
			crdate as 'name/@create_date',
			name as 'name'
		from 
			sys.sysobjects
		where 
			type = 'u' and
			name like 'b%'

		order by 
			name

		for xml path(''), type
	)

	for xml path('objects'), type
)

for xml path('set'), type


Даст такой XML:
<set>
  <simple_date>2015-01-22T19:16:13.613</simple_date>
  <example>
    <header>Simple XML from MSSQL</header>
  </example>
  <objects>
    <name id="366624349" create_date="2010-04-02T17:36:00.743">backupfile</name>
    <name id="286624064" create_date="2010-04-02T17:36:00.637">backupfilegroup</name>
    <name id="110623437" create_date="2010-04-02T17:36:00.480">backupmediafamily</name>
    <name id="46623209" create_date="2010-04-02T17:36:00.373">backupmediaset</name>
    <name id="206623779" create_date="2010-04-02T17:36:00.580">backupset</name>
  </objects>
</set>


Никак не могу найти лаконичный и понятный способ произвольного именования полей/тегов в PL/SQL
Пакет dbms_xmlgen позволяет назначать имена тегам, но не атрибутам
Т.е., вывести тег name и рядом с ним(!) id можно:
<name>backupset</name>
<id>206623779</id>

А отформатировать таким образом, что бы, грубо говоря, часть полей была тегами, а часть - их атрибутами - не позволяет.
Как решить эту задачу?
Я в PL/SQL новичок и пока ничего вменяемого на просторах инета не нашел.
Помогите, плиз!
22 янв 15, 19:23    [17156418]     Ответить | Цитировать Сообщить модератору
 Re: Имена тегов и атрибутов при выводе данных в XML  [new]
AmKad
Member

Откуда:
Сообщений: 5222
sheich,

xmlattributes, xmlelement
22 янв 15, 19:29    [17156442]     Ответить | Цитировать Сообщить модератору
 Re: Имена тегов и атрибутов при выводе данных в XML  [new]
sheich
Member

Откуда:
Сообщений: 209
AmKad
sheich,

xmlattributes, xmlelement

А с примером можно?
22 янв 15, 19:30    [17156444]     Ответить | Цитировать Сообщить модератору
 Re: Имена тегов и атрибутов при выводе данных в XML  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
sheich,

evalname:
select xmlelement( evalname (select dummy from dual), tname) from tab where rownum<10;
22 янв 15, 19:42    [17156474]     Ответить | Цитировать Сообщить модератору
 Re: Имена тегов и атрибутов при выводе данных в XML  [new]
sheich
Member

Откуда:
Сообщений: 209
ОК

Использование XMLELEMENT и XMLATTRIBUTES приводит к тому, что мы получаем сет из строк - табличный результат, каждая строка которого представлена в виде XML.
SELECT 
	XMLELEMENT("DEPT", XMLATTRIBUTES(DEPARTMENT_ID "id"), DEPARTMENT_NAME) as t
FROM 
	hr.DEPARTMENTS;

Но мне-то нужно получить один большой XML..
Как оборачивать такие запросы?
22 янв 15, 20:00    [17156560]     Ответить | Цитировать Сообщить модератору
 Re: Имена тегов и атрибутов при выводе данных в XML  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
sheich,

не ленимся и читаем
22 янв 15, 20:26    [17156649]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить