将查询结果传递给CLR SqlFunction

时间:2011-08-12 13:23:38

标签: sql sql-server-2008 clr user-defined-functions

嘿伙计我有一个存储过程需要将另一个存储过程的结果集传递给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

1 个答案:

答案 0 :(得分:1)

请参阅此问题Pass table as parameter to SQLCLR TV-UDF,其中包含指向其他相关信息的链接。简而言之,SQL CLR目前不支持TVP。

如果结果集足够小,您可以将其转换为XML类型,并将其作为参数传递给SQL CLR函数(SqlXml)。

您还可以让存储过程设置临时表以进行共享。它很草率,但可能最终成为你唯一的选择。