Executar WEB Service via procedure

Tudo sobre banco de dados e SQL

Executar WEB Service via procedure

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

 

Comentários: 7

  1. Sergio disse:

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

  2. Sergio disse:

    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 disse:

      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 disse:

      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!

    • Ruberlei disse:

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

Adicione seu comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.