У меня есть таблица с полем XMLType.Таблица создается и загружается с использованием следующего DDL / DML:
CREATE TABLE T_ECO_test_LOG
(
SECID NUMBER NOT NULL,
LOG_ATTRIBUTES SYS.XMLTYPE
)
INSERT INTO t_eco_test_log VALUES
( 1, XMLType(
'<attributes>
<attribute>
<name>remoteAddress</name>
<value>180.201.106.130</value>
</attribute>
<attribute>
<name>domain</name>
<value>BSI_US</value>
</attribute>
</attributes>'));
INSERT INTO t_eco_test_log VALUES
( 2, XMLType(
'<attributes>
<attribute>
<name>user</name>
<value>xxxx</value>
</attribute>
<attribute>
<name>domain</name>
<value>BSI_US</value>
</attribute>
</attributes>'));
Я хочу получить различные значения в / attribute / attribute / name в строках;Итак, с данными O хотелось бы получить:
remoteAddress
domain
user
До сих пор я пробовал следующий запрос:
select extractValue(value(x),'/attributes/attribute/name')
from t_eco_log,
table(xmlsequence(extract(log_attributes,'/attributes')) )x
Но я получаю следующее сообщение:
ORA-19025: EXTRACTVALUE возвращает значение только одного узла
Если я использую
select extract(value(x),'/attributes/attribute/name')
from t_eco_log,
table(xmlsequence(extract(log_attributes,'/attributes')) )x
Я получил XML-результат, который содержит:
<name>remoteAddress</name><name>domain</name>
Но я хотел бычтобы получить их в виде строк, как я могу это сделать?
TIA