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

Откуда:
Сообщений: 36
Поясните пожалуйста.
Есть тестовый пример
select * from
XmlTable('response/taskList/item1' Passing XmlType('<response >
<taskList rr="sdfg" bb="----asdf"> jj
<item taskId="110022506028" sysOrderId="139849896" />
<item1 rr="sdfg1" > itt <taskId>1100225060280</taskId> </item1>
</taskList>
</response>')
columns
taskId XMLTYPE PATH '.',
XZ varchar2(255) PATH '/XZ'
)

в поле XZ = itt 1100225060280
Совершенно не понимаю почему. Я ожидаю пусто или ошибку но никак не значение у меня то нет тега XZ?
При том если написать /item1/XZ то становится значение пусто что уже правильно по моему.
27 дек 18, 17:27    [21775039]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
werthvfy1
Member

Откуда:
Сообщений: 36
такой же результат itt 1100225060280
получаю если
указываю
XZ varchar2(255) PATH '/taskId'
Что тоже по моему неправильно
27 дек 18, 17:39    [21775059]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
werthvfy1
Member

Откуда:
Сообщений: 36
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
27 дек 18, 17:41    [21775065]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
werthvfy1
в поле XZ = itt 1100225060280

????
На 11.2.0.3 - пустота

+


Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from
2 XmlTable('response/taskList/item1' Passing XmlType('<response >
3 <taskList rr="sdfg" bb="----asdf"> jj
4 <item taskId="110022506028" sysOrderId="139849896" />
5 <item1 rr="sdfg1" > itt <taskId>1100225060280</taskId> </item1>
6 </taskList>
7 </response>')
8 columns
9 taskId XMLTYPE PATH '.',
10 XZ varchar2(255) PATH '/XZ'
11 );

TASKID
--------------------------------------------------------------------------------
XZ
--------------------------------------------------------------------------------
<item1 rr="sdfg1"> itt <taskId>1100225060280</taskId></item1>

27 дек 18, 17:45    [21775074]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
werthvfy1
Member

Откуда:
Сообщений: 36
Leonid Kudryavtsev,
А если указать XZ varchar2(255) PATH '/taskId'?
Подозреваю что где то глюк
27 дек 18, 17:58    [21775086]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
werthvfy1
А если указать XZ varchar2(255) PATH '/taskId'?

пусто
если '//taskId' (два слэша), то '1100225060280'

IMHO Нужны независимые тестеры с "11.2.0.4.0 - 64bit Production", если у них глюк вопроизведется, то возможно бага.
27 дек 18, 18:06    [21775096]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
Elic
Member

Откуда:
Сообщений: 29979
werthvfy1
А если указать XZ varchar2(255) PATH '/taskId'?
Подозреваю что где то глюк
В 11.2.0.4. Такой путь запрашивает корень, который по определению один. Вот они и переоптимизировали и всегда возвращают корень независимо от его названия.
27 дек 18, 18:07    [21775097]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 652
werthvfy1,

Oracle 12.1.0.2:

+
для
XZ varchar2(255) PATH '/XZ'

XZ 
 itt 1100225060280

для
XZ varchar2(255) PATH '//XZ'

XZ 
null

для
XZ varchar2(255) PATH 'XZ'

XZ 
null

для
XZ varchar2(255) PATH 'taskId'

XZ
1100225060280

для
XZ varchar2(255) PATH '/taskId'

XZ
 itt 1100225060280

для
XZ varchar2(255) PATH '//taskId'

XZ
1100225060280
27 дек 18, 18:14    [21775105]     Ответить | Цитировать Сообщить модератору
 Re: XMLTable  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
IMHO Очередная бага пофикшенная в 11.2.0.3 и аки фенекс возродившаяся в 11.2.0.4
27 дек 18, 18:38    [21775132]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить