Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XMLTABLE узел при краткой форме записи / 8 сообщений из 8, страница 1 из 1
22.05.2017, 20:09
    #39457667
Герундий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Всем привет.

При такой форме записи получаю доступ к элементам
Код: 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.
SELECT
*
FROM 
    XMLTABLE('root/tree_main/code' PASSING
                                       XMLTYPE(
                                                '<root>
                                                    <tree_main>
                                                            <code id="1">
                                                                <values>
                                                                    <value>00</value>
                                                                </values>
                                                            </code>
                                                            <code id="2">
                                                                <values>
                                                                    <value>01</value>
                                                                </values>
                                                            </code>
                                                    </tree_main>    
                                                </root>'
                                                ) 
                                           
            columns cId varchar2(10) path '@id',
                    nVal varchar2(10) path 'values/value'    
            )


А если краткая форма, то нет возможности обратиться к элементам
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT
*
FROM 
    XMLTABLE('root/tree_main/code' PASSING
                                       XMLTYPE(
                                                '<root>
                                                    <tree_main>
                                                            <code id="1"/>
                                                                <values>
                                                                    <value>00</value>
                                                                </values>
                                                            <code id="2"/>
                                                                <values>
                                                                    <value>01</value>
                                                                </values>
                                                    </tree_main>    
                                                </root>'
                                                ) 
                                           
            columns cId varchar2(10) path '@id',
                    nVal varchar2(10) path 'values/value'    
            ) 



Подскажите, как правильно обращаться к элементам?
...
Рейтинг: 0 / 0
22.05.2017, 20:43
    #39457672
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Герундийкак правильно обращаться к элементам?По имени и отчеству. Пробелы для xml ничего не значат, тем более их количество. Полагаться на взаимопоследовательность элементов тоже крайне альтернативно.
...
Рейтинг: 0 / 0
22.05.2017, 21:17
    #39457679
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Герундий,

Это не идентичные xml, во втором случае values не дочерние для code.
...
Рейтинг: 0 / 0
23.05.2017, 00:06
    #39457707
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
получается, что для второго кейса values не связан с code и не может быть вычислен относительным xpath-ом.
можно попробовать как-то использовать position()

https://docs.oracle.com/cd/E35413_01/doc.722/e35419/dev_xpath_functions.htm#autoId3
...
Рейтинг: 0 / 0
23.05.2017, 00:44
    #39457710
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Герундий,

Как было уже замечено, структура изменена.

Код: 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.
SQL> SELECT
  2  *
  3  FROM
  4      XMLTABLE('root/tree_main' PASSING
  5                                         XMLTYPE(
  6                                                  '<root>
  7                                                      <tree_main>
  8                                                              <code id="1"/>
  9                                                                  <values>
 10                                                                      <value>00</value>
 11                                                                  </values>
 12                                                              <code id="2"/>
 13                                                                  <values>
 14                                                                      <value>01</value>
 15                                                                  </values>
 16                                                      </tree_main>
 17                                                  </root>'
 18                                                  )
 19              columns cId1  varchar2(10) path '/*/*[1]/@id',
 20                      nVal1 varchar2(10) path '/*/*[2]/*',
 21                      cId2  varchar2(10) path '/*/*[3]/@id',
 22                      nVal2 varchar2(10) path '/*/*[4]/*'
 23              );

CID1       NVAL1      CID2       NVAL2
---------- ---------- ---------- ----------
1          00         2          01

SQL>
...
Рейтинг: 0 / 0
23.05.2017, 00:47
    #39457711
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Или "еще лучше"

Код: plaintext
1.
2.
3.
            columns cId1  varchar2(10) path '/*/*[1]/@*[1]',
                    nVal1 varchar2(10) path '/*/*[2]/*',
                    cId2  varchar2(10) path '/*/*[3]/@*[1]',
                    nVal2 varchar2(10) path '/*/*[4]/*' 
...
Рейтинг: 0 / 0
23.05.2017, 07:55
    #39457739
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
ГерундийА если краткая формаЭто никакая не краткая форма.
XML в Oracle9i. Примеры разборки
...
Рейтинг: 0 / 0
23.05.2017, 12:04
    #39457912
Герундий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XMLTABLE узел при краткой форме записи
Спасибо всем большое за ответы.

Отдельное спасибо: dbms_photoshop и Elic.

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


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