我有一个表值函数,它是一个调用远程Web服务计算的SQLCLR函数。我想知道CROSS APPLY函数会以并行方式还是顺序方式调用函数。
我不确定支持计算的Web服务是否真的是线程安全的。
Cross-apply查询:
WITH listCTE AS
(
SELECT 'definition1' AS def UNION ALL
SELECT 'definition2' AS def UNION ALL
SELECT 'definition3' AS def
)
SELECT calc.*
FROM listCTE a
CROSS APPLY dbo.f_webservice_calculate (a.def,'2017-06-30') calc
SQLCLR TVF函数定义。
[SqlFunction(
Name = "f_webservice_calculate",
DataAccess = DataAccessKind.Read,
FillRowMethodName = "fillRowMethod",
SystemDataAccess = SystemDataAccessKind.Read
)]
public static IEnumerable f_webservice_calculate(string def, DateTime date)
{
...calling web service using HttpWebRequest
}