Oracle XMLTable函数和XPATH

时间:2013-10-23 16:22:16

标签: oracle xquery

我有一个存储在XML类型表

中的以下xml文档
<?xml version="1.0" encoding="utf-8"?>
<Document xmlns="urn:iso:std:iso:200:tech:xsd:101" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <FIToFICstmrCdtTrf xmlns="urn:iso:std:iso:200:tech:xsd:101">
                            <CreditTx>
                <PaymentID>
                    <InstrumentId>AAB000001</InstrumentId>
                    <Id>4730 2013-10-23 AAB000001</Id>
                    <TranxId>BULKTTXTDAAB000001</TranxId>
                </PaymentID>
            </CreditTx>
        </FIToFICstmrCdtTrf>
</Document>

当我执行下面的SQL

SELECT payments.instrumentid,
payments.id,
payments.tranxid
FROM paymentxml,
XMLTable('for $i in /Document/FIToFICstmrCdtTrf/CreditTx/PaymentID
return $i'
PASSING OBJECT_VALUE
COLUMNS
instrumentid VARCHAR2(20) PATH 'InstrumentId' ,
id VARCHAR2(20) PATH 'Id' ,
tranxid VARCHAR2(20) PATH 'TranxId'
)payments

我没有得到任何结果,即使xpath是正确的任何想法我缺少什么

1 个答案:

答案 0 :(得分:0)

对于

  

for $ i in / Document / FIToFICstmrCdtTrf / CreditTx / PaymentID return $ i

部分您必须将文档作为

  

for $ i in   DOC( “/你/路/ your.xml”)/文件/ FIToFICstmrCdtTrf / CreditTx / PaymentID   返回$ i

了解资源的位置非常重要,即/your/path/your.xml

我希望这会对你有所帮助。