Está semana me perguntaram se teria como chamar um WEB Service pelo SQL Server, nunca havia feito, porém, já havia visto que era possível, aproveitei a pergunta, para realizar a chamada de um WEB Service via SQL Server e colocar em pratica o que já havia lido sobre o assunto.

Vamos ao exemplo, primeiramente é necessário habilitar a utilização de alguns recursos, conforme o exemplo abaixo:

SP_CONFIGURE 'SHOW ADVANCED OPTIONS', 1
GO
RECONFIGURE;
GO
SP_CONFIGURE 'OLE AUTOMATION PROCEDURES', 1
GO
RECONFIGURE;
GO

Agora vamos a procedure que chama o WEB Service, ela é bem simples e foi baseada no exemplo do CODE PROJECT.

Foi utilizado um WEB Service que não fosse necessário autenticação com usuário e senha, o WEB Service via cep, onde é enviado um CEP e é retornado algumas informações referente a esse CEP.

CREATE PROCEDURE P_CALLWS @V_PARAM VARCHAR(20) = NULL
AS
   
DECLARE @V_OBJ INT;
DECLARE @V_URL VARCHAR(200);
DECLARE @V_RESPONSE VARCHAR(8000);
 
SET @V_URL = 'https://viacep.com.br/ws/' + @V_PARAM +  '/json/'
EXEC SP_OACREATE 'MSXML2.ServerXMLHttp', @V_OBJ out
EXEC SP_OAMETHOD @V_OBJ, 'OPEN', NULL, 'GET', @V_URL, FALSE
EXEC SP_OAMETHOD @V_OBJ, 'SEND'
exec SP_OAGETPROPERTY @V_OBJ, 'responseText', @V_RESPONSE out
 
SELECT @V_RESPONSE RESULT
 
EXEC SP_OADESTROY @V_OBJ
 
RETURN

Feito isso, vamos executar a procedure para vermos o retorno do WEB Service.

EXEC P_CALLWS '17501441'

O resultado deve ser igual a imagem abaixo caso tenha passado o mesmo CEP como parâmetro.

Result WEBService


7 comentários

Sergio · 2 de agosto de 2016 às 13:55

Prezados, bom dia,
Por qual motivo se repete a execução da SP_CONFIGURE ‘SHOW ADVANCED OPTIONS’, 1 ?
Obrigado.

    Ruberlei · 10 de agosto de 2016 às 14:55

    Estava errado mesmo, já fiz a correção, obrigado.

Sergio · 19 de agosto de 2016 às 14:03

Prezado, bom dia,
Fiz o procedimento em dois locais e obtive resultados diferentes, ambos na versão 2014:

1) numa instalação local, no meu notebook, funcionou tudo certo, o retorno veio com o resultado esperado.

2) numa instalação em um servidor, onde está instalado o SQL 2014 também, o resultado retornado é NULL. Mas, executando neste mesmo servidor o webservice, via Browser, tudo ocorre corretamente.

Sabem o que pode estar ocorrendo? Ou como posso ver o que está ocorrendo? via LOG, etc?

Obrigado.

    Ruberlei · 19 de agosto de 2016 às 17:11

    Boa tarde tudo bem?

    Caso queira me envie por e-mail o código que está utilizando para que possa analisar.

    ruberlei@gmail.com

    No aguardo,
    Ruberlei.

      Sergio · 31 de agosto de 2016 às 18:33

      Ruberlei, boa tarde,

      Primeiramente, obrigado sempre pela pronta resposta.
      Na verdade, eu consegui corrigir o problema, fiz uma correção na URL do webservice e deu tudo certo.

      Porém agora, preciso incrementar esse código da Procedure.

      Primeiramente, preciso executar um webservice que vai popular uma tabela X no meu banco, e após isso, preciso executar um SELECT simples nesta tabela X que foi populada.

      Gostaria de saber o procedimento correto para isso, visto que para fazer o SELECT preciso garantir que o processo executado pelo webservice tenha terminado.

      Obrigado mais uma vez!

MARCELO MARQUES · 17 de janeiro de 2018 às 12:42

sabe se ainda funciona

    Ruberlei · 31 de janeiro de 2018 às 15:45

    Faz tempo que fiz, faz o teste se não funcionar me avisa, que refaço e te mando um exemplo funcionando!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *