我已经创建了一个这样的 CLR 函数
public class GETJSONFROMURL
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString GETData(SqlString URL)
{
SqlString Data = "N/A";
using (var webClient = new System.Net.WebClient())
{
var json = webClient.DownloadString(new Uri(URL.ToString()));
// Now parse with JSON.Net
JObject o = JObject.Parse(json);
Data = (string)o["Data_results"]["MyData"];
}
return Data;
}
}
并在 Sql 中创建了一个函数 像这样
CREATE ASSEMBLY GetDataURL
FROM 'C:\GETJSONFROMURL.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
CREATE FUNCTION GetDataURL (@URL NVARCHAR(MAX))
RETURNS NVARCHAR(MAX) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME GetDataURL.GETJSONFROMURL.GETData
当我在查询窗口中选择此功能时,我会在 0.03 秒内非常快地得到结果
SELECT [dbo].[GetDataURL] ('http://www.Testserver.com/123')
但是当我将此函数调用为多个调用时,例如在插入某些调用选择后的触发器内部时,我会延迟获取结果。
你能帮我创建一个异步函数,当我在 sql 内部调用时,因为多次调用没有延迟返回结果。
谢谢