嘿伙计我有一个存储过程需要将另一个存储过程的结果集传递给UDF,而UDF又调用CLR SqlFunction。我无法弄清楚如何将结果集传递给我的CLR SqlFunction。我没有看到表SqlType也没有在网上找到任何示例,也许我搜索不正确?另外,如果你看一下传入的最后一个参数,那就是我遇到问题的地方。不知道如何传入结果集。谢谢!
<SqlFunction(DataAccess:=DataAccessKind.Read, SystemDataAccess:=SystemDataAccessKind.Read)> _
Public Function GetMatchedConstituents(ByVal ID As SqlGuid, ByVal CustomID As SqlString,
ByVal KeyName As SqlString, ByVal FirstName As SqlString,
ByVal MiddleName As SqlString, ByVal AddressBlock_Home As SqlString,
ByVal AddressBlock_Business As SqlString, ByVal PostCode_Home As SqlString,
ByVal PostCode_Business As SqlString, ByVal Phone_Home As SqlString,
ByVal Phone_Business As SqlString, ByVal ResultSet As [WhatType? There isnt a SqlTable like I assumed]) As IEnumerable
'do duplicate comparing logic here
End Function
答案 0 :(得分:1)
请参阅此问题Pass table as parameter to SQLCLR TV-UDF,其中包含指向其他相关信息的链接。简而言之,SQL CLR目前不支持TVP。
如果结果集足够小,您可以将其转换为XML类型,并将其作为参数传递给SQL CLR函数(SqlXml
)。
您还可以让存储过程设置临时表以进行共享。它很草率,但可能最终成为你唯一的选择。