添付された XML ファイルからデータを取得するために、Oracle 11g XMLTABLE 関数を使用しています。コードを実行すると、3 行が表示されます。顧客に対応する製品ごとに 1 つの行を正しく生成する製品を取得しています。問題は、残りの顧客データを取得していないことです。CustomerName、CustomerDOB、および CustomerEmail に対して null を取得しています。何らかの理由で、私が使用しているコードでは、Oracle は 2 レベル上を取得していません。助けてください!私は何を間違っていますか?
XML
<?xml version="1.0" encoding="iso-8859-1"?>
<USACustomers>
<NewYorkCustomers>
<Customer>
<CustomerData>
<CustomerName>John Stark</CustomerName>
<CustomerDOB>07/09/1973</CustomerDOB>
<CustomerEmail>j.stark@liquid.com</CustomerEmail>
</CustomerData>
<CustomerAddress>
<Address>400 Railroad Way</Address>
<City>Larchmont</City>
<State>NY</State>
<Zip>10542</Zip>
</CustomerAddress>
<CustomerProducts>
<CustomerProduct>
<PoductType>CTD</PoductType>
<ProductNumber>2050035302</ProductNumber>
</CustomerProduct>
<CustomerProduct>
<PoductType>REC</PoductType>
<ProductNumber>2050920400</ProductNumber>
</CustomerProduct>
</CustomerProducts>
</Customer>
<Customer>
<CustomerData>
<CustomerName>Maria Stark</CustomerName>
<CustomerDOB>07/09/1972</CustomerDOB>
<CustomerEmail>m.stark@liquid.com</CustomerEmail>
</CustomerData>
<CustomerAddress>
<Address>410 Railroad Way</Address>
<City>Larchmont</City>
<State>NY</State>
<Zip>10542</Zip>
</CustomerAddress>
<CustomerProducts>
<CustomerProduct>
<PoductType>REC</PoductType>
<ProductNumber>2050920400</ProductNumber>
</CustomerProduct>
</CustomerProducts>
</Customer>
</NewYorkCustomers>
</USACustomers>
コード
SELECT
CustomerName,
CustomerDOB,
CustomerEmail,
PoductType
FROM XMLTABLE ( '/USACustomers/NewYorkCustomers/Customer/CustomerProducts/CustomerProduct'
PASSING xmltype (BFILENAME ('BACKUP', 'TEST.xml'), NLS_CHARSET_ID ('AL32UTF8'))
COLUMNS CustomerName VARCHAR2(50) PATH 'CustomerData/CustomerName',
CustomerDOB VARCHAR2(50) PATH 'CustomerData/CustomerDOB',
CustomerEmail VARCHAR2(50) PATH 'CustomerData/CustomerEmail',
PoductType VARCHAR2(50) PATH 'PoductType',
ProductNumber VARCHAR2(50) PATH 'ProductNumber');