我有这个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="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>
我需要让<CFe>
内的节点<LoteCFe
在变量声明中检索尽可能多的XMLTYPE
要将参数传递给另一个过程,为简化起见:
SELECT
X.nodeCFe
FROM
XMLTABLE(
'/envCFe/LoteCFe'
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 'CFe'
) X
;
我把这个结果作为表格会出错?
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>
答案 0 :(得分:1)
您的根节点声明了一个名称空间,因此您需要在查询中处理该名称空间;你可以使用默认的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
;
得
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>