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

При такой форме записи получаю доступ к элементам
Код: 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
XMLTABLE узел при краткой форме записи
    #39457672
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герундийкак правильно обращаться к элементам?По имени и отчеству. Пробелы для xml ничего не значат, тем более их количество. Полагаться на взаимопоследовательность элементов тоже крайне альтернативно.
...
Рейтинг: 0 / 0
XMLTABLE узел при краткой форме записи
    #39457679
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Герундий,

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

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

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

Код: 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
XMLTABLE узел при краткой форме записи
    #39457711
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или "еще лучше"

Код: 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
XMLTABLE узел при краткой форме записи
    #39457739
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГерундийА если краткая формаЭто никакая не краткая форма.
XML в Oracle9i. Примеры разборки
...
Рейтинг: 0 / 0
XMLTABLE узел при краткой форме записи
    #39457912
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем большое за ответы.

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

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


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