1
화물 서비스를 보았지만 반환 된 XML을 테이블로 변환 할 수 없습니다.XML을 SQL Server 테이블로 변환
SQL Server 2016에서 this example을 사용하려고했지만 어떤 이유로 작동하지 않습니다. 내가 잘못하고있는 것은 무엇입니까?
나는이 웹 서비스에 대한 쿼리에서 XML 가지고 :SET @Url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?'+
'nCdEmpresa='[email protected]+
'&sDsSenha='[email protected]+
'&sCepOrigem='[email protected]+
'&sCepDestino='[email protected]+
'&nVlPeso='[email protected]+
'&nCdFormato='+CONVERT(VARCHAR(20), @nCdFormato)+
'&nVlComprimento='+CONVERT(VARCHAR(20), @nVlComprimento)+
'&nVlAltura='+CONVERT(VARCHAR(20), @nVlAltura)+
'&nVlLargura='+CONVERT(VARCHAR(20), @nVlLargura)+
'&sCdMaoPropria='[email protected]+
'&nVlValorDeclarado='+CONVERT(VARCHAR(20), @nVlValorDeclarado)+
'&sCdAvisoRecebimento='[email protected]+
'&nCdServico='[email protected]+
'&nVlDiametro='+CONVERT(VARCHAR(20), @nVlDiametro)+
'&StrRetorno=xml';
EXEC sp_OACreate 'MSXML2.ServerXMLHttp', @Obj OUTPUT;
EXEC sp_OAMethod @Obj, 'open', NULL, 'GET', @Url, FALSE;
EXEC sp_OAMethod @Obj, 'send';
EXEC sp_OAGetProperty @Obj, 'responseText', @Response OUTPUT;
EXEC sp_OADestroy @Obj;
SET @XML = @Response COLLATE SQL_Latin1_General_CP1251_CS_AS
가 그럼 난 이렇게 노력을하지만 그것은 작동하지 않습니다 :
--Result from frist code
DECLARE @XML XML = '<cResultado xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
<Servicos>
<cServico>
<Codigo>4014</Codigo>
<Valor>17,20</Valor>
<PrazoEntrega>3</PrazoEntrega>
<ValorMaoPropria>0,00</ValorMaoPropria>
<ValorAvisoRecebimento>0,00</ValorAvisoRecebimento>
<ValorValorDeclarado>0,00</ValorValorDeclarado>
<EntregaDomiciliar>S</EntregaDomiciliar>
<EntregaSabado>S</EntregaSabado>
<Erro>0</Erro>
<MsgErro />
<ValorSemAdicionais>17,20</ValorSemAdicionais>
<obsFim />
</cServico>
</Servicos>
</cResultado>';
DECLARE @XmlHandle INT,
@PrepareXmlStatus INT;
EXEC @PrepareXmlStatus= sp_xml_preparedocument @XmlHandle OUTPUT, @XML
SELECT *
FROM OPENXML(@XmlHandle, '/cResultado/Servicos/cServico', 2)
WITH (
Codigo INT,
Valor SMALLMONEY,
PrazoEntrega INT,
ValorMaoPropria SMALLMONEY,
ValorAvisoRecebimento SMALLMONEY,
ValorValorDeclarado SMALLMONEY,
EntregaDomiciliar VARCHAR(1),
EntregaSabado VARCHAR(1),
Erro INT,
MsgErro VARCHAR(500),
ValorSemAdicionais SMALLMONEY,
obsFim VARCHAR(500)
)
EXEC sp_xml_removedocument @XmlHandle