Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста как получить трансформацию / 5 сообщений из 5, страница 1 из 1
08.01.2021, 15:58
    #40034181
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста как получить трансформацию
Подскажите пожалуйста как получить трансформацию?:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Имеется 
xmltype('
<root>
  <row>
    <col>v11</col>
    <col>v12</col>
    <col>v13</col>
    <col>v14</col>
  </row>
  <row>
    <col>v21</col>
    <col>v22</col>
    <col>v23</col>
    <col>v24</col>
  </row>
</root>')


Необходимо:

а) Получить выборку

Код: plsql
1.
2.
3.
4.
C1   C2   C3   C4
---- ---- ---- ----
v11  v12  v13  v14
v21  v22  v23  v24



Условия: количество узлов row может варьироваться, col всегда статично = 4 шт в пределах row

b) Получить в виде результата колонку с типом xmltype SQL запроса со следующей структурой:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
   <data row="1" col="1">v11</data>
   <data row="1" col="2">v12</data>
   <data row="1" col="3">v13</data>
   <data row="1" col="4">v14</data>
   <data row="2" col="1">v21</data>
   <data row="2" col="2">v22</data>
   <data row="2" col="3">v23</data>
   <data row="2" col="4">v24</data>
</root>




Реализовать данный запрос не используя XSLT трансформацию.
Условия: количество узлов row и col может варьироваться (прим. это более сложный пример, можно вернуть условие что количество col всегда статично = 4 шт в пределах row)

c) Получить в виде результата колонку с типом xmltype SQL запроса со следующей структурой:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
   <data row="1" col="1">v11</data>
   <data row="1" col="2">v12</data>
   <data row="1" col="3">v13</data>
   <data row="1" col="4">v14</data>
   <data row="2" col="1">v21</data>
   <data row="2" col="2">v22</data>
   <data row="2" col="3">v23</data>
   <data row="2" col="4">v24</data>
</root>



Реализовать данный запрос используя XSLT трансформацию.
Условия: количество узлов row и col может варьироваться
...
Рейтинг: 0 / 0
08.01.2021, 16:09
    #40034185
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста как получить трансформацию
AdamAry
Условия:
Недостаточны. Не указано, во сколько оценивается скудоумие при решении лаб.
...
Рейтинг: 0 / 0
08.01.2021, 18:48
    #40034227
AdamAry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста как получить трансформацию
Elic, авторНедостаточны.
Использую Oracle 10.2.
...
Рейтинг: 0 / 0
08.01.2021, 22:00
    #40034255
Vlad074
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста как получить трансформацию
Решал недавно с нулевым уровнем xml. Поиском точно можно найти на этом форуме или варианты ответа, или куда копать. Самое сложное было в с) нумеровать row.
...
Рейтинг: 0 / 0
10.01.2021, 21:15
    #40034733
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста как получить трансформацию
AdamAry

Использую Oracle 10.2.


От скуки чтобы вспомнить архаику:

Код: 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.
with sample as (
                select xmltype('
<root>
  <row>
    <col>v11</col>
    <col>v12</col>
    <col>v13</col>
    <col>v14</col>
  </row>
  <row>
    <col>v21</col>
    <col>v22</col>
    <col>v23</col>
    <col>v24</col>
  </row>
</root>') xmldoc from dual
               )
select  xmlelement(
                   "root",
                   xmlquery(
                            '
                             for $r at $ri in /root/row
                               for $c at $ci in $r/col
                                 return <data row="{$ri}" col="{$ci}">{$c}</data>
                            '
                            passing xmldoc
                            returning content
                           )
                  ).extract('/') xmldoc
  from  sample
/

XMLDOC
----------------------------------------------
<root>
  <data row="1" col="1">
    <col>v11</col>
  </data>
  <data row="1" col="2">
    <col>v12</col>
  </data>
  <data row="1" col="3">
    <col>v13</col>
  </data>
  <data row="1" col="4">
    <col>v14</col>
  </data>
  <data row="2" col="1">
    <col>v21</col>
  </data>
  <data row="2" col="2">
    <col>v22</col>
  </data>
  <data row="2" col="3">
    <col>v23</col>
  </data>
  <data row="2" col="4">
    <col>v24</col>
  </data>
</root>


SQL> 



Остальное допилишь.

SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста как получить трансформацию / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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