2017-06-23 14 views
1

SQL Serverデータベースに保存されたXMLテキストからデータを取得する際に問題があります。私のデータは以下の通りである:私は内容だけを選択したいSQLのXMLからデータを選択

<retConsReciCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00"> 
 
    <tpAmb>2</tpAmb> 
 
    <verAplic>SP-CTe-25-05-2017</verAplic> 
 
    <nRec>351000011484798</nRec> 
 
    <cStat>104</cStat> 
 
    <xMotivo>Lote processado</xMotivo> 
 
    <cUF>35</cUF> 
 
    <protCTe versao="3.00"> 
 
    <infProt> 
 
     <tpAmb>2</tpAmb> 
 
     <verAplic>SP-CTe-25-05-2017</verAplic> 
 
     <chCTe>35170623838348000310570000000058731000058731</chCTe> 
 
     <dhRecbto>2017-06-22T21:28:18-03:00</dhRecbto> 
 
     <cStat>232</cStat> 
 
     <xMotivo>Rejeição: IE do destinatário não informada</xMotivo> 
 
    </infProt> 
 
    </protCTe> 
 
</retConsReciCTe>

。私は次のクエリを実行していますこのような理由:

select top 10 retorno_sefaz_doc.value('(/retConsReciCTe/@xmln)[1]','varchar(10)') as [retorno] from documentos

そして、私のリターンは常にNULLです。誰かが優しく私に何がうまくいかないかを伝える助けを与えることができましたか?

+0

あなたの予想される出力は何ですか? – TriV

+0

私はatribute versaoのコンテンツを取りたいと思っています。この場合、3.00 –

答えて

2

あなたはこの

DECLARE @SampleData AS TABLE 
(
    XmlValue xml 
) 

INSERT INTO @SampleData 
(
    XmlValue 
) 
VALUES 
(N'<retConsReciCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00"> 
    <tpAmb>2</tpAmb> 
    <verAplic>SP-CTe-25-05-2017</verAplic> 
    <nRec>351000011484798</nRec> 
    <cStat>104</cStat> 
    <xMotivo>Lote processado</xMotivo> 
    <cUF>35</cUF> 
    <protCTe versao="3.00"> 
    <infProt> 
     <tpAmb>2</tpAmb> 
     <verAplic>SP-CTe-25-05-2017</verAplic> 
     <chCTe>35170623838348000310570000000058731000058731</chCTe> 
     <dhRecbto>2017-06-22T21:28:18-03:00</dhRecbto> 
     <cStat>232</cStat> 
     <xMotivo>Rejeição: IE do destinatário não informada</xMotivo> 
    </infProt> 
    </protCTe> 
</retConsReciCTe>') 

;WITH XMLNAMESPACES (default 'http://www.portalfiscal.inf.br/cte') 
select sd.XmlValue.value('(/retConsReciCTe/@versao)[1]','varchar(20)') 
                  AS Versao 
FROM @SampleData sd 

のような出力を得るために、デフォルトの名前空間とvalueを定義することができ返し

Versao 
3.00 
+0

Good!よく働く!ありがとう!!!! –

+0

良い解決策、私の側から+ 1、しかし、 'CROSS APPLY'の必要はありません。 – Shnugo

+0

はい、それは冗長です。ありがとう@ Shugo ... – TriV

関連する問題