oracle数据库中XMLtype列的查询值

oracle数据库中XMLtype列的查询值,xml,oracle,oracle11g,Xml,Oracle,Oracle11g,我有一个XMLtype列,其中包含像XML_表ID号、XML_数据XMLtype这样的表。 然后我插入一个值,如 INSERT INTO xml_table (1, XMLtype('<current> <city id="2643743" name="London"> <coord lon="-0.13" lat="51.51"/> <country>GB</country> <sun rise="2

我有一个XMLtype列,其中包含像XML_表ID号、XML_数据XMLtype这样的表。 然后我插入一个值,如

INSERT INTO xml_table (1, XMLtype('<current>
  <city id="2643743" name="London">
    <coord lon="-0.13" lat="51.51"/>
    <country>GB</country>
    <sun rise="2015-03-04T06:38:20" set="2015-03-04T17:46:01"/>
  </city>
  <temperature value="280.71" min="280.15" max="281.15" unit="kelvin"/>
  <humidity value="77" unit="%"/>
  <pressure value="1029" unit="hPa"/>
</current>'));
但我无法通过此查询选择温度值。现在如何从表中选择温度值?

在10g及以上版本中不推荐EXTRACT和EXTRACTVALUE。您应该改用XMLTABLE:

EXTRACT和EXTRACTVALUE在10g及以上版本中不推荐使用。您应该改用XMLTABLE:

select t.xml_data.extract('/current/city/country/text()').getStringVal() "XML Data"
from xml_table t;
with xml_table as (select 1 id, XMLtype('<current>
  <city id="2643743" name="London">
    <coord lon="-0.13" lat="51.51"/>
    <country>GB</country>
    <sun rise="2015-03-04T06:38:20" set="2015-03-04T17:46:01"/>
  </city>
  <temperature value="280.71" min="280.15" max="281.15" unit="kelvin"/>
  <humidity value="77" unit="%"/>
  <pressure value="1029" unit="hPa"/>
</current>') xml_data from dual)
select x.*
from   xml_table xt,
       xmltable('/current' passing xt.xml_data
                columns country varchar2(10) path 'city/country',
                        temp_k number path 'temperature/@value') x;

COUNTRY        TEMP_K
---------- ----------
GB             280.71