从XMLType变量中检索多个XMLType
我有以下XML:从XMLType变量中检索多个XMLType,xml,oracle,xmltype,xmltable,Xml,Oracle,Xmltype,Xmltable,我有以下XML: <envCFe versao="0.07" xmlns="http://www.fazenda.sp.gov.br/sat"> <tpAmb>1</tpAmb> <idLote>4100</idLote> <cUF>35</cUF> <LoteCFe> <CFe> <infCFe versao=
<envCFe versao="0.07" xmlns="http://www.fazenda.sp.gov.br/sat">
<tpAmb>1</tpAmb>
<idLote>4100</idLote>
<cUF>35</cUF>
<LoteCFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<dhEnvio>20171106081311</dhEnvio>
<nserieSAT>000081226</nserieSAT>
</envCFe>
如果将此结果作为表格,我会犯什么错误
nodeCFe
-------
<CFe><infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100"></infCFe</CFe>
<CFe><infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100"></infCFe</CFe>
<CFe><infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100"></infCFe</CFe>
您的根节点声明了一个名称空间,所以您需要在查询中处理它;您可以使用默认的XMLNamespaces子句来实现这一点。您还需要XPath来转到要提取的节点:
SELECT
X.nodeCFe
FROM
XMLTABLE(
XMLNAMESPACES(default 'http://www.fazenda.sp.gov.br/sat'),
'/envCFe/LoteCFe/CFe'
PASSING XMLTYPE(
...
使用您的数据:
SELECT
X.nodeCFe
FROM
XMLTABLE(
XMLNAMESPACES(default 'http://www.fazenda.sp.gov.br/sat'),
'/envCFe/LoteCFe/CFe'
PASSING XMLTYPE(
'<envCFe versao="0.07" xmlns="http://www.fazenda.sp.gov.br/sat">
<tpAmb>1</tpAmb>
<idLote>4100</idLote>
<cUF>35</cUF>
<LoteCFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<dhEnvio>20171106081311</dhEnvio>
<nserieSAT>000081226</nserieSAT>
</LoteCFe>
</envCFe>'
)
COLUMNS
nodeCFe XMLTYPE PATH '.'
) X
;
得到
不太清楚。。。。您的查询现在重新运行什么,您想要什么?三个单独的XMLType值?
SELECT
X.nodeCFe
FROM
XMLTABLE(
XMLNAMESPACES(default 'http://www.fazenda.sp.gov.br/sat'),
'/envCFe/LoteCFe/CFe'
PASSING XMLTYPE(
'<envCFe versao="0.07" xmlns="http://www.fazenda.sp.gov.br/sat">
<tpAmb>1</tpAmb>
<idLote>4100</idLote>
<cUF>35</cUF>
<LoteCFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<CFe>
<infCFe versao="0.07" versaoDadosEnt="0.07" versaoSB="020100">
</infCFe>
</CFe>
<dhEnvio>20171106081311</dhEnvio>
<nserieSAT>000081226</nserieSAT>
</LoteCFe>
</envCFe>'
)
COLUMNS
nodeCFe XMLTYPE PATH '.'
) X
;
NODECFE
--------------------------------------------------------------------------------
<CFe xmlns="http://www.fazenda.sp.gov.br/sat"><infCFe versao="0.07" versaoDadosE
nt="0.07" versaoSB="020100">
</infCFe></CFe>
<CFe xmlns="http://www.fazenda.sp.gov.br/sat"><infCFe versao="0.07" versaoDadosE
nt="0.07" versaoSB="020100">
</infCFe></CFe>
<CFe xmlns="http://www.fazenda.sp.gov.br/sat"><infCFe versao="0.07" versaoDadosE
nt="0.07" versaoSB="020100">
</infCFe></CFe>