Galera, boa tarde. Preciso de uma informação.
Estou iniciando na area de programação , e preciso saber qual o método prático para passar os blocos de um arquivo xml como colunas no SQL.
Estou construindo uma proc na qual preciso verificar o cnpj de um fornecedor. O XML está nesse formato:
<NFe xmlns="http://www.portalfiscal...">
<infNFe Id="IDdaNOTAFISCAL" versao="2.00">
<ide>
<cUF>UF</cUF>
<cNF>99999</cNF>
<natOp>ENTRADA</natOp>
<indPag>2</indPag>
<mod>10</mod>
<serie>1</serie>
<nNF>99998</nNF>
<dEmi>9999-99-99</dEmi>
<tpNF>1</tpNF>
<cMunFG>123456</cMunFG>
<NFref>
<refNFe>999999999999999998</refNFe>
</NFref>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>3</cDV>
<tpAmb>1</tpAmb>
<finNFe>1</finNFe>
<procEmi>0</procEmi>
<verProc>2.0</verProc>
</ide>
<emit>
<CNPJ>99999999000189</CNPJ>
Em testes, fiz o seguinte:
DECLARE @CNPJ xml
SET @CNPJ ='<NFe><CNPJ>99999999000199</CNPJ></NFe>'
SELECT ParamValues.ID.value('.','VARCHAR(20)') as 'Teste'
FROM @CNPJ.nodes('/NFe') as ParamValues(ID)
Isso funciona perfeitamente. Porém preciso deixar isso um pouco mais dinamico (usando SELECT). Porém ao executar o código abaixo, o mesmo não me retorna nada...
declare @CNPJteste xml
set @CNPJteste = (select CONVERT(xml, ds_xml) from tb_nota_fiscal_eletronica
where cd_nota_fiscal_eletronica = '99999')
select ParamValues.ID.value('.', 'varchar(20)') as 'Dados do XML'
FROM @CNPJteste.nodes('/NFe/infNFe/emit') as ParamValues(ID)
Executando o select de @CNPJteste tenho o xml retornado numa coluna. Mas não consigo chegar ao valor do bloco CNPJ do xml.
Alguma sugestão? Acredito que seja algo que estou deixando passar em branco...
Fico no aguardo e agradeço.