powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод результатов запроса в XML по известной структуре
25 сообщений из 41, страница 1 из 2
Вывод результатов запроса в XML по известной структуре
    #39755348
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой, надо выгрузить результаты запроса в файл в формате XML. Смущает что пакетов несколько, про количество функций молчу, опыта подобных выгрузок 0,00%, не очень понятно где копать. Был бы благодарен если направите на путь истинный как это сделать проще и посовременние. Oracle 12, имеются на руках примеры файлов XML которые должны получиться, а также схема файла для выгрузки в формате XSD.

Есть ли возможность чтобы при запросе указать такой вот XSD (ну выдрав предварительно его структуру и исполоьзвать его содержимое как входной параметр, запрос еще одним параметром) на выходе получить такой вот правильный XML. Если кинете ссылку на пример буду благодарен особенно

Заранее спасибо


P.S.Доброго дня и с наступившим НГ :)
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755362
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM XML DB Developer Guide
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755373
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

а немножко более развернуто можно, в какой части по Вашему мнению искать ответы ?
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755381
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
createSchemaBasedXML

SY.
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755387
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из того что прочел , у меня создалось впечатление что XSD будет использован только для проверки - по формату/не по формату сгенерированный файл, но для механизма собственно генерации это не поможет . Это так ?

У меня файл XML будет несколько уровней, то есть если я правильно понял по доыольно скудным примерам для DBMS_XMLGEN надо будет соответствующие типы создать..

Все-таки хотелось бы ясности, смотреть в сторону DBMS_XMLGEN.getxml или все же можно XSD для ГЕНЕРАЦИИ облегчить реализации
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755390
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример сгенерированного XML каким он должен быть
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
<Report xmlns="http://www.jaxb.msp/report/IncomeReport">
	<DateCreate>2018-12-11</DateCreate>
	<Dognum>809112</Dognum>
	<ReportType>1</ReportType>
	<BnfMonth>2018-09-01</BnfMonth>
	<Check1>0.00</Check1>
	<Check2>1012.99</Check2>
	<Check3>0.00</Check3>
	<Check4>0.00</Check4>
	<Beneficiaries>
		<Beneficiary>
			<MoID>809</MoID>
			<PayID>1157897065</PayID>
			<NUMLS>1230987</NUMLS>
			<SNILS>012-721-011 00</SNILS>
			<Name1>Иванов</Name1>
			<Name2>Иван</Name2>
			<Name3>Иванович</Name3>
			<StreetID>12670</StreetID>
			<HouseNum>12</HouseNum>
			<CorpusNum>3</CorpusNum>
			<BuildingNum>1</BuildingNum>
			<Flat>15</Flat>
			<UNOM>5432</UNOM>
			<HouseFIAS>123</HouseFIAS>
			<Phone>4990010101</Phone>
			<OccupType>2</OccupType>
			<OwnProperty>1</OwnProperty>
			<PPLReg>2</PPLReg>
			<PPLCnt>2</PPLCnt>
			<TotalSquare>56.7</TotalSquare>
			<Gender>М</Gender>
			<Birthday>1950-05-12</Birthday>
			<OwnSquare>28.7</OwnSquare>
			<RegType>1</RegType>
			<LivingType>1</LivingType>
			<DocType>21</DocType>
			<DocSeries>4509</DocSeries>
			<DocNumber>987608</DocNumber>
			<DocDate>2006-09-05</DocDate>
			<DocOrg>ОВД</DocOrg>
			<FamilyMembers>
				<FamilyMember>
					<SNILS>015-725-041 08</SNILS>
					<Name1>Иванова</Name1>
					<Name2>Анна</Name2>
					<Name3>Егоровна</Name3>
					<Gender>Ж</Gender>
					<Birthday>1952-07-01</Birthday>
					<FamilyRelation>2</FamilyRelation>
					<OwnSquare>28</OwnSquare>
				</FamilyMember>
			</FamilyMembers>
			<Categories>
				<Category>
					<BenefitID>67</BenefitID>
					<Documents>
						<Document>
							<DocType>12</DocType>
							<DocSeries>АБ</DocSeries>
							<DocNumber>123</DocNumber>
							<DocDate>2010-08-07</DocDate>
							<DocOrg>МУСЗН</DocOrg>
						</Document>
					</Documents>
				        <Services>
 				          	<Service>
				              		<ServiceID>182</ServiceID>
 				             		<Tariff>188.53</Tariff>
				              		<ConsumerQty>1</ConsumerQty>
				              		<Quant>1.9955</Quant>
 				             		<BnfSquare>38.6</BnfSquare>
 				             		<Summa>188.10</Summa>
 				             		<TotalQuant>1.9955</TotalQuant>
 				           	</Service>
 				         </Services>
				</Category>
				<Category>
					<BenefitID>84</BenefitID>
					<Documents>
						<Document>
							<DocType>15</DocType>
							<DocSeries>МСЭ-2015</DocSeries>
							<DocNumber>567</DocNumber>
							<DocDate>2015-12-07</DocDate>
							<DocEnd>2016-12-07</DocEnd>
							<DocOrg>ВТЭК</DocOrg>
						</Document>
					</Documents>
				        <Services>
 				          	<Service>
				              		<ServiceID>33</ServiceID>
 				             		<Tariff>2279.95</Tariff>
				              		<ConsumerQty>1</ConsumerQty>
				              		<Quant>0.474371</Quant>
 				             		<BnfSquare>38.6</BnfSquare>
 				             		<Summa>540.77</Summa>
 				             		<TotalQuant>0.474371</TotalQuant>
 				           	</Service>
 				         </Services>
				</Category>
			</Categories>
		</Beneficiary>
		<Beneficiary>
			<MoID>809</MoID>
			<PayID>1157897065</PayID>
			<NUMLS>1230988</NUMLS>
			<SNILS>012-751-011 00</SNILS>
			<Name1>Петрова</Name1>
			<Name2>Ольга</Name2>
			<Name3>Ивановна</Name3>
			<StreetID>12670</StreetID>
			<HouseNum>12</HouseNum>
			<CorpusNum>3</CorpusNum>
			<BuildingNum>1</BuildingNum>
			<Flat>14</Flat>
			<UNOM>5432</UNOM>
			<HouseFIAS>123</HouseFIAS>
			<Phone>4990010102</Phone>
			<OccupType>2</OccupType>
			<OwnProperty>1</OwnProperty>
			<PPLReg>2</PPLReg>
			<PPLCnt>2</PPLCnt>
			<TotalSquare>56.7</TotalSquare>
			<Gender>М</Gender>
			<Birthday>1955-05-12</Birthday>
			<OwnSquare>28.7</OwnSquare>
			<RegType>1</RegType>
			<LivingType>1</LivingType>
			<DocType>21</DocType>
			<DocSeries>4509</DocSeries>
			<DocNumber>987609</DocNumber>
			<DocDate>2008-09-05</DocDate>
			<DocOrg>ОВД</DocOrg>
			<FamilyMembers>
				<FamilyMember>
					<SNILS>015-735-045 08</SNILS>
					<Name1>Петров</Name1>
					<Name2>Иван</Name2>
					<Name3>Петрович</Name3>
					<Gender>М</Gender>
					<Birthday>1953-07-01</Birthday>
					<FamilyRelation>2</FamilyRelation>
					<OwnSquare>28</OwnSquare>
				</FamilyMember>
			</FamilyMembers>
			<Categories>
				<Category>
					<BenefitID>68</BenefitID>
					<Documents>
						<Document>
							<DocType>12</DocType>
							<DocSeries>АБ</DocSeries>
							<DocNumber>125</DocNumber>
							<DocDate>2011-08-07</DocDate>
							<DocOrg>МУСЗН</DocOrg>
						</Document>
					</Documents>
				        <Services>
 				          	<Service>
				              		<ServiceID>182</ServiceID>
 				             		<Tariff>188.53</Tariff>
				              		<ConsumerQty>1</ConsumerQty>
				              		<Quant>0.333333</Quant>
 				             		<BnfSquare>17.6</BnfSquare>
 				             		<Summa>31.42</Summa>
 				             		<TotalQuant>0.999999</TotalQuant>
 				           	</Service>
 				         </Services>
				</Category>
				<Category>
					<BenefitID>84</BenefitID>
					<Documents>
						<Document>
							<DocType>15</DocType>
							<DocSeries>МСЭ-2016</DocSeries>
							<DocNumber>568</DocNumber>
							<DocDate>2016-12-07</DocDate>
							<DocEnd>2017-12-07</DocEnd>
							<DocOrg>ВТЭК</DocOrg>
						</Document>
					</Documents>
				        <Services>
 				          	<Service>
				              		<ServiceID>33</ServiceID>
 				             		<Tariff>1806.89</Tariff>
				              		<ConsumerQty>1</ConsumerQty>
				              		<Quant>0.279708</Quant>
 				             		<BnfSquare>17.6</BnfSquare>
 				             		<Summa>252.70</Summa>
 				             		<TotalQuant>0.839124</TotalQuant>
 				           	</Service>
 				         </Services>
				</Category>
			</Categories>
		</Beneficiary>
	</Beneficiaries>
</Report>
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755393
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755445
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_BiosИз того что прочел , у меня создалось впечатление что XSD будет использован только для проверки - по формату/не по формату сгенерированный файл, но для механизма собственно генерации это не поможет . Это так ?Ты не безнадёжен. Чудо-генератор сможет сосать данные из вакуума?
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755448
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

данные-то я буду запросом доставать, я просто надеялся, что есть некий движок в который можно прописать соответствие XSD поля с полем в результаете запроса и который сам "отформатирует" включая вложенности.
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755449
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_Biosя просто надеялся, что есть некий движокЕсть: 21777382
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755451
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicDual_Biosя просто надеялся, что есть некий движокЕсть: 21777382

Или я совсем туплю или мы говорим о разном. Изначально я предполагал что есть некая функция Х, где входные параметры А- текст запроса, B-текст шаблона XSD. Или XSD где-то зарегстрирован и B параметр ссылается на него). И функция по этому скелету вернет готовый XML

Вы даете мне ссылки , но эти функции как-то не укладываются у меня в какую-то единую конструкцию как бы это могло быть. Можете дать ссылку на ПРИМЕР что-то пусть очень отдаленного, но того что по Вашему мнению будет ориентиром КАК это надо сделать ? Чтобы какая-то общая картина нарисовалась в голове
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755452
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_Biosя предполагал что есть некая функция Х, где входные параметры А- текст запросаПредположи более приземлённо: как мог бы выглядеть запросDual_Biosвключая вложенности
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755455
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_Bios,

Попробуй посмотреть на xsl трансформации
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755457
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

для начала мне надо понять базово, какой пакет и функция будет задействована. Из того что я нашел, я так понял что есть две основные альтернативы, или
что то типа такого решения (ну понятно более насыщенного)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
declare    
      
      l_directory    varchar2(30) := 'TMP_DIR';    
      l_filename     varchar2(256) := 'test.xml';    
      l_xml          xmltype;    
      l_schema_url   varchar2(256) := 'http://xmlns.oracle.com/xml/student_content.xsd';   
      
      l_xlist        xmlsequencetype := xmlsequencetype();  
      l_output       clob;    
      
      cursor c_xml is  
      select xmlelement("Description"      
             , xmlelement("Key", t.description)      
             ) as doc  
      from my_table t;     
      
    begin    
      
      for r in c_xml loop  
      
        l_xml := r.doc.createSchemaBasedXML(l_schema_url);  
        l_xml.schemaValidate();  
      
        l_xlist.extend;  
        l_xlist(l_xlist.last) := l_xml;  
      
      end loop;  
      
      -- aggregate all validated instances into a single XML fragment :   
      select xmlserialize(content xmlagg(t.column_value))  
      into l_output  
      from table(l_xlist) t;  
      
      dbms_xslprocessor.clob2file(    
        l_output
      , l_directory  
      , l_filename  
      , nls_charset_id('AL32UTF8')  
      );    
      
    end;    
        



Или через dbms_xmlgen.getxml

Пытаюсь понять по какой ветке пойти
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755459
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicDual_Biosя предполагал что есть некая функция Х, где входные параметры А- текст запросаПредположи более приземлённо: как мог бы выглядеть запросDual_Biosвключая вложенности
Ну или тупая плоская таблица , где левая часть тупо бы дублилась в рамках одного узла, если бы как-от можно было бы директинво указать что эти поля узлы, либо через cast(collect( c приведением к типам
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755460
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivDual_Bios,

Попробуй посмотреть на xsl трансформации

Хм, посмотрел но пока вижу только взаимоотношения с готовый XML который у меня еще должен как-то получиться. А пока я еще для себя не понял каким способом его стоит получать
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755462
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_BiosА пока я еще для себя не понял каким способом его стоит получать https://www.sql.ru/forum/actualsearch.aspx?search=xmlelement xmlagg&sin=0&bid=3&a=&ma=0&dt=-1&s=1&so=1
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755537
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_BiosХм, посмотрел но пока вижу только взаимоотношения с готовый XML который у меня еще должен как-то получиться. А пока я еще для себя не понял каким способом его стоит получать

Запрос имеешь, ну так добавь агрегацию и используй XMLELEMENT + XMLAGG + (по вкусу) XMLSERIALIZE . Например запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT  D.DEPTNO,
        D.DNAME,
        D.LOC,
        E.EMPNO,
        E.ENAME,
        E.JOB,
        E.SAL,
  FROM  DEPT D,
        EMP E
  WHERE E.DEPTNO = D.DEPTNO
/  



Добавляем агрегацию, XMLELEMENT, XMLAGG, XMLSERIALIZE:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
SELECT  XMLSERIALIZE(
                     DOCUMENT
                     XMLELEMENT(
                                "ORGANIZATION",
                                XMLELEMENT(
                                           "DEPARTMENTS",
                                           XMLAGG(
                                                  XMLELEMENT(
                                                             "DEPARTMENT",
                                                             XMLELEMENT(
                                                                        "NUMBER",
                                                                        D.DEPTNO
                                                                       ),
                                                             XMLELEMENT(
                                                                        "NAME",
                                                                        MAX(D.DNAME)
                                                                       ),
                                                             XMLELEMENT(
                                                                        "LOCATION",
                                                                        MAX(D.LOC)
                                                                       ),
                                                             XMLELEMENT(
                                                                        "EMPLOYEES",
                                                                        XMLAGG(
                                                                               XMLELEMENT(
                                                                                          "EMPLOYEE",
                                                                                          XMLELEMENT(
                                                                                                     "EMPNO",
                                                                                                     E.EMPNO
                                                                                                    ),
                                                                                          XMLELEMENT(
                                                                                                     "ENAME",
                                                                                                     E.ENAME
                                                                                                    ),
                                                                                          XMLELEMENT(
                                                                                                     "JOB",
                                                                                                     E.JOB
                                                                                                    ),
                                                                                          XMLELEMENT(
                                                                                                     "SAL",
                                                                                                     E.SAL
                                                                                                    )
                                                                                         )
                                                                                  )
                                                                       )
                                                            )
                                                 )
                                          )
                               )
                     INDENT
                       SIZE = 2
                    ) ORGANIZATION
  FROM  DEPT D,
        EMP E
  WHERE E.DEPTNO = D.DEPTNO
  GROUP BY D.DEPTNO
/

ORGANIZATION
---------------------------------------------------------
<ORGANIZATION>
  <DEPARTMENTS>
    <DEPARTMENT>
      <NUMBER>10</NUMBER>
      <NAME>ACCOUNTING</NAME>
      <LOCATION>NEW YORK</LOCATION>
      <EMPLOYEES>
        <EMPLOYEE>
          <EMPNO>7782</EMPNO>
          <ENAME>CLARK</ENAME>
          <JOB>MANAGER</JOB>
          <SAL>2450</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7934</EMPNO>
          <ENAME>MILLER</ENAME>
          <JOB>CLERK</JOB>
          <SAL>1300</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7839</EMPNO>
          <ENAME>KING</ENAME>
          <JOB>PRESIDENT</JOB>
          <SAL>5000</SAL>
        </EMPLOYEE>
      </EMPLOYEES>
    </DEPARTMENT>
    <DEPARTMENT>
      <NUMBER>20</NUMBER>
      <NAME>RESEARCH</NAME>
      <LOCATION>DALLAS</LOCATION>
      <EMPLOYEES>
        <EMPLOYEE>
          <EMPNO>7369</EMPNO>
          <ENAME>SMITH</ENAME>
          <JOB>CLERK</JOB>
          <SAL>800</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7902</EMPNO>
          <ENAME>FORD</ENAME>
          <JOB>ANALYST</JOB>
          <SAL>3000</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7876</EMPNO>
          <ENAME>ADAMS</ENAME>
          <JOB>CLERK</JOB>
          <SAL>1100</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7788</EMPNO>
          <ENAME>SCOTT</ENAME>
          <JOB>ANALYST</JOB>
          <SAL>3000</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7566</EMPNO>
          <ENAME>JONES</ENAME>
          <JOB>MANAGER</JOB>
          <SAL>2975</SAL>
        </EMPLOYEE>
      </EMPLOYEES>
    </DEPARTMENT>
    <DEPARTMENT>
      <NUMBER>30</NUMBER>
      <NAME>SALES</NAME>
      <LOCATION>CHICAGO</LOCATION>
      <EMPLOYEES>
        <EMPLOYEE>
          <EMPNO>7499</EMPNO>
          <ENAME>ALLEN</ENAME>
          <JOB>SALESMAN</JOB>
          <SAL>2600</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7900</EMPNO>
          <ENAME>JAMES</ENAME>
          <JOB>CLERK</JOB>
          <SAL>950</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7844</EMPNO>
          <ENAME>TURNER</ENAME>
          <JOB>SALESMAN</JOB>
          <SAL>1500</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7698</EMPNO>
          <ENAME>BLAKE</ENAME>
          <JOB>MANAGER</JOB>
          <SAL>2850</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7654</EMPNO>
          <ENAME>MARTIN</ENAME>
          <JOB>SALESMAN</JOB>
          <SAL>1250</SAL>
        </EMPLOYEE>
        <EMPLOYEE>
          <EMPNO>7521</EMPNO>
          <ENAME>WARD</ENAME>
          <JOB>SALESMAN</JOB>
          <SAL>1250</SAL>
        </EMPLOYEE>
      </EMPLOYEES>
    </DEPARTMENT>
  </DEPARTMENTS>
</ORGANIZATION>


SQL> 



SY.
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755553
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

если есть время и натхнення

уровней больше одного (deptno, job, enpno)?
напр
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  1  select d.deptno,d.dname,e.job,e.empno,e.ename,e.sal
  2* from dept d,emp e where d.deptno=e.deptno order by d.deptno,e.job
SQL> /

    DEPTNO DNAME          JOB            EMPNO ENAME             SAL
---------- -------------- --------- ---------- ---------- ----------
        10 ACCOUNTING     CLERK           7934 MILLER           1300
                          MANAGER         7782 CLARK            2450
                          PRESIDENT       7839 KING             5000
        20 RESEARCH       ANALYST         7788 SCOTT            3000
                                          7902 FORD             3000
                          CLERK           7369 SMITH             800
                                          7876 ADAMS            1100
                          MANAGER         7566 JONES            2975
        30 SALES          CLERK           7900 JAMES             950
                          MANAGER         7698 BLAKE            2850
                          SALESMAN        7499 ALLEN            1600
                                          7521 WARD             1250
                                          7654 MARTIN           1250
                                          7844 TURNER           1500





.....
stax
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755567
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
WITH T AS (
           SELECT  DEPTNO,
                   JOB,
                   XMLELEMENT(
                              "EMPLOYEES",
                               XMLAGG(
                                      XMLELEMENT(
                                                 "EMPLOYEE",
                                                 XMLELEMENT(
                                                            "NUMBER",
                                                            EMPNO
                                                           ),
                                                 XMLELEMENT(
                                                            "NAME",
                                                            ENAME
                                                           ),
                                                 XMLELEMENT(
                                                            "SALARY",
                                                            SAL
                                                           )
                                                )
                                     )
                             ) JOB_EMPLOYEES
              FROM  EMP
              GROUP BY DEPTNO,
                       JOB
           )
SELECT  XMLSERIALIZE(
                     DOCUMENT
                     XMLELEMENT(
                                "ORGANIZATION",
                                XMLELEMENT(
                                           "DEPARTMENTS",
                                           XMLAGG(
                                                  XMLELEMENT(
                                                             "DEPARTMENT",
                                                             XMLELEMENT(
                                                                        "NUMBER",
                                                                        D.DEPTNO
                                                                       ),
                                                             XMLELEMENT(
                                                                        "NAME",
                                                                        MAX(D.DNAME)
                                                                       ),
                                                             XMLELEMENT(
                                                                        "LOCATION",
                                                                        MAX(D.LOC)
                                                                       ),
                                                             XMLELEMENT(
                                                                        "JOBS",
                                                                        XMLAGG(
                                                                               XMLELEMENT(
                                                                                          "JOB",
                                                                                          XMLELEMENT(
                                                                                                     "TITLE",
                                                                                                     T.JOB
                                                                                                    ),
                                                                                          T.JOB_EMPLOYEES
                                                                                         )
                                                                              )
                                                                       )
                                                            )
                                                 )
                                          )
                               )
                     INDENT
                       SIZE = 2
                    ) ORGANIZATION
  FROM  DEPT D,
        T
  WHERE T.DEPTNO = D.DEPTNO
  GROUP BY D.DEPTNO
/

ORGANIZATION
---------------------------------------------
<ORGANIZATION>
  <DEPARTMENTS>
    <DEPARTMENT>
      <NUMBER>10</NUMBER>
      <NAME>ACCOUNTING</NAME>
      <LOCATION>NEW YORK</LOCATION>
      <JOBS>
        <JOB>
          <TITLE>CLERK</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7934</NUMBER>
              <NAME>MILLER</NAME>
              <SALARY>1300</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>PRESIDENT</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7839</NUMBER>
              <NAME>KING</NAME>
              <SALARY>5000</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>MANAGER</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7782</NUMBER>
              <NAME>CLARK</NAME>
              <SALARY>2450</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
      </JOBS>
    </DEPARTMENT>
    <DEPARTMENT>
      <NUMBER>20</NUMBER>
      <NAME>RESEARCH</NAME>
      <LOCATION>DALLAS</LOCATION>
      <JOBS>
        <JOB>
          <TITLE>CLERK</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7369</NUMBER>
              <NAME>SMITH</NAME>
              <SALARY>800</SALARY>
            </EMPLOYEE>
            <EMPLOYEE>
              <NUMBER>7876</NUMBER>
              <NAME>ADAMS</NAME>
              <SALARY>1100</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>MANAGER</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7566</NUMBER>
              <NAME>JONES</NAME>
              <SALARY>2975</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>ANALYST</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7788</NUMBER>
              <NAME>SCOTT</NAME>
              <SALARY>3000</SALARY>
            </EMPLOYEE>
            <EMPLOYEE>
              <NUMBER>7902</NUMBER>
              <NAME>FORD</NAME>
              <SALARY>3000</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
      </JOBS>
    </DEPARTMENT>
    <DEPARTMENT>
      <NUMBER>30</NUMBER>
      <NAME>SALES</NAME>
      <LOCATION>CHICAGO</LOCATION>
      <JOBS>
        <JOB>
          <TITLE>CLERK</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7900</NUMBER>
              <NAME>JAMES</NAME>
              <SALARY>950</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>SALESMAN</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7499</NUMBER>
              <NAME>ALLEN</NAME>
              <SALARY>2600</SALARY>
            </EMPLOYEE>
            <EMPLOYEE>
              <NUMBER>7844</NUMBER>
              <NAME>TURNER</NAME>
              <SALARY>1500</SALARY>
            </EMPLOYEE>
            <EMPLOYEE>
              <NUMBER>7654</NUMBER>
              <NAME>MARTIN</NAME>
              <SALARY>1250</SALARY>
            </EMPLOYEE>
            <EMPLOYEE>
              <NUMBER>7521</NUMBER>
              <NAME>WARD</NAME>
              <SALARY>1250</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
        <JOB>
          <TITLE>MANAGER</TITLE>
          <EMPLOYEES>
            <EMPLOYEE>
              <NUMBER>7698</NUMBER>
              <NAME>BLAKE</NAME>
              <SALARY>2850</SALARY>
            </EMPLOYEE>
          </EMPLOYEES>
        </JOB>
      </JOBS>
    </DEPARTMENT>
  </DEPARTMENTS>
</ORGANIZATION>


SQL> 



SY.
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755615
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Код: plsql
1.
                                                                                                     "TITLE",

За такие отступы надо отрывать руки.
IMHO
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39755626
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Спасибо, я так примерно и делал
Надеялся что есть какой-то трюк

.....
stax
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39756029
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал, большое спасибо за примеры. Что напрягает меня в тернистом пути поиска правильного решения - большой объем выборки на основе которой будет строиться XML - порядка 1,5 миллионов строк данных в базовой таблице, к которой будет подтягиваться детализация раз в 5 больше... Раньше все это из запроса по порциям складировалось в CSV (делалось на толстом клиенте, там еще ряд постдействий не связанных с выгрузкой делался потому и на толстом) .

Допустим здесь тоже порционно можно писать, а потом на трансформе это не умрет ?
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39756031
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dual_Biosбудет строиться XML - порядка 1,5 миллионов строк данных в базовой таблице, к которой будет подтягиваться детализация раз в 5 больше...Dual_Biosа потом на трансформе это не умрет ?Нужно задаться вопросом, а не поперхнётся ли следующий приёмник.

Архитекторы всё больше дебилизируются…
...
Рейтинг: 0 / 0
Вывод результатов запроса в XML по известной структуре
    #39756036
Dual_Bios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic, таковы требования сторонней организации (монополиста), которой мы передаем файл с данными, читать-то наверно легче чем писать..
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод результатов запроса в XML по известной структуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]