Cómo llamar a un Web Service desde nuestro código Transact-SQL

El primer punto a tener en cuenta es activar Ole Automation Procedures en nuestro Servidor, dado que es muy probable que esté desactivado si no lo hemos utilizado anteriormente. Esto lo podemos hacer ejecutando el siguiente código:

 

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO


Una vez que hemos activado Ole Automation Procedures, ahora si podemos incluir las llamadas a los Web Services desde un Stored Procedure o un Trigger, tal como muestra el siguiente ejemplo con JSON.

 

Inicia 21 de Noviembre

 

CREATE PROCEDURE NombreStoredProcedure

AS
BEGIN

SET NOCOUNT ON;

DECLARE  @Object as Int;
DECLARE  @Status Int;
DECLARE  @ResponseText as Varchar (8000);

DECLARE @requestBody NVARCHAR(MAX) = ‘
{variable1 : «texto»,
variable2 : 1 }’

EXEC sp_OACreate ‘WinHttp.WinHttpRequest.5.1’, @Object OUT;
EXEC sp_OAMethod @Object, ‘Open’, NULL, ‘POST’, ‘https://server/api/method’, ‘false
EXEC sp_OAMethod @Object, ‘setRequestHeader’, null, ‘Content-Type’, ‘application/json’

DECLARE @len INT = len(@requestBody)
EXEC sp_OAMethod @Object, ‘setRequestHeader’, null, ‘Content-Length’, @len
EXEC sp_OAMethod @Object, ‘send’, null, @requestBody
EXEC sp_OAGetProperty @Object, ‘Status’, @Status OUT
EXEC sp_OAMethod @Object, ‘responseText’, @ResponseText OUTPUT

SELECT @ResponseText

EXEC sp_OADestroy @Object

END


Inicia 21 de Noviembre