在 Oracle 中提取 XML 数据时总是空白

Always getting blank when extracting XML data in Oracle

我在 Oracle NCLOB 上有一个 XML 数据:

<Storage xmlns="http://tempuri.org/Storage.xsd">
  <TableInfo>
    <Name>Table Name</Name>
    <Description>Table Description</Description>
    ...
  </TableInfo>
  <ColumnInfo>
    <Name>Column Name 1</Name>
    <Caption>Column Caption 1</Caption>
    ...
  </ColumnInfo>
  <ColumnInfo>
    <Name>Column Name 2</Name>
    <Caption>Column Caption 2</Caption>
    ...
  </ColumnInfo>
  ...

在 Oracle 中,这是我提取数据的尝试:

...
CROSS JOIN XMLTABLE('/Storage/ColumnInfo'
  PASSING XMLTYPE(cv.dictionary_data) -- NCLOB column holding the XML
    COLUMNS
      tag VARCHAR2(500) PATH 'Name',
      caption VARCHAR2(500) PATH 'Caption'
) x
...

我一直在尝试使用绝对和相对 XPath 来替换 /Storage/ColumnInfo,但我总是出现空白。

我的目标是:

ID Tag Caption
1 Column Name 1 Column Caption 1
1 Column Name 2 Column Caption 2
2 Another Name 1 Another Caption 1
2 Another Name 2 Another Caption 2
2 Another Name 3 Another Caption 3

您必须指定命名空间:

CROSS JOIN XMLTABLE(XMLNAMESPACES(DEFAULT 'http://tempuri.org/Storage.xsd'), '/Storage/ColumnInfo'