从存储过程调用Web Api 2端点

ff8*_*nia 5 t-sql sql-server json sql-server-2008 asp.net-web-api2

某些遗留SQL存储过程(SQL Server 2008)需要从我提供的Web服务(Web Api 2)获取一些信息.

如何调用端点(在GET中),检索数据(JSON格式)并转换临时表中接收的数据以在sproc的其余部分中使用?

谢谢

Vad*_* K. 8

最好的方法是创建Used-defined CLR函数并从那里调用Web API,这样你就可以使用C#和.Net库的全部功能来进行Web调用并解析Json.互联网上有大量关于此的信息.例如:https://blogs.msdn.microsoft.com/spike/2010/11/25/how-to-consume-a-web-service-from-within-sql-server-using-sql-clr/.这与WebAPI无关,但您可以从那里获得想法.

请注意,它需要将带有CLR功能的自定义程序集部署到SQL Server.

编辑:

有一种方法可以使用OLE自动化在TSQL中执行此操作.在这里看一个例子,但它更难,记录更少,你可能会花时间发明自己的自行车,而不是使用CLR功能的现成解决方案.


S.M*_*deh 6

无需编写CLR即可轻松完成:

Declare @Object as Int;
Declare @ResponseText as Varchar(8000);

Code Snippet
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',
                 'http://www.webservicex.com/stockquote.asmx/GetQuote?symbol=MSFT', --Your Web Service Url (invoked)
                 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

Select @ResponseText

Exec sp_OADestroy @Object
Run Code Online (Sandbox Code Playgroud)

  • 这适用于调用XML Web Service,但我认为最初的问题是如何调用Web API(使用JSON,而不是XML). (5认同)