Jump to content
Fórum Script Brasil
  • 0

Chamada de web service por procedure


pvictor

Question

Estou usando o sql server 2016 para consumir webservice por store procedure. Tenho um webservice em JSON retornando o seguinte:

[{"nome":"Rebecca","email":"rebecca@hotmail.com","ra":"12345"},{"nome":"Caroline","email":"caroline@hotmail.com","ra":"23456"},{"nome":"Vanessa","email":"vanessa@yahoo.com.br","ra":"99999"}]

Consigo consumi-lo passando uma variável. Se eu deixar meu webservice para receber um parametro e passa-lo eu consigo retornar nome e email do aluno. Porém se eu deixar meu webservice sem a necessidade de receber parametro e retirar a passagem de parametro da procedure e executar, minha procedure retorna null. O que eu preciso mudar no meu código para conseguir retornar a lista completa de alunos que meu webservice expoe?

Segue meu código com passagem de parametros que retorna o usuário do RA correspondente:

create PROCEDURE webservice_parametros (@RA as varchar (5))
AS
BEGIN

DECLARE @OBJ INT;
DECLARE @URL VARCHAR(200);
DECLARE @RESPONSE VARCHAR(8000);

SET @URL = 'http://dominio:8080/v1/alunos/' + @RA
EXEC SP_OACREATE 'MSXML2.ServerXMLHttp', @OBJ out
EXEC SP_OAMETHOD @OBJ, 'OPEN', NULL, 'GET', @URL, FALSE
EXEC SP_OAMETHOD @OBJ, 'SEND'
exec SP_OAGETPROPERTY @OBJ, 'responseText', @RESPONSE out
EXEC SP_OADESTROY @OBJ

SELECT JSON_VALUE(@RESPONSE, '$.nome') as nome,
    JSON_VALUE(@RESPONSE, '$.email') as email

END     

execute webservice_parametros '12345'

Meu código que retorna null para um serviço que não precisa de parâmetros

create PROCEDURE webservice
AS
BEGIN

DECLARE @OBJ INT;
DECLARE @URL VARCHAR(200);
DECLARE @RESPONSE VARCHAR(8000);

SET @URL = 'http://dominio:8080/v1/alunos/'
EXEC SP_OACREATE 'MSXML2.ServerXMLHttp', @OBJ out
EXEC SP_OAMETHOD @OBJ, 'OPEN', NULL, 'GET', @URL, FALSE
EXEC SP_OAMETHOD @OBJ, 'SEND'
exec SP_OAGETPROPERTY @OBJ, 'responseText', @RESPONSE out
EXEC SP_OADESTROY @OBJ

SELECT JSON_VALUE(@RESPONSE, '$.nome') as nome,
    JSON_VALUE(@RESPONSE, '$.email') as email

END     

execute webservice
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...