2011-08-12 62 views
2

嗨,大家好我有一个存储过程需要将另一个存储过程的结果集传递给UDF,该UDF又调用CLR SqlFunction。我不知道该怎么做是如何将结果集传递给我的CLR SqlFunction。我没有看到一个表SqlType,也不能在网上找到任何例子,也许我错误地搜索?另外,如果您查看传入的最后一个参数,那就是我遇到问题的地方。不知道如何传入结果集。谢谢!将查询结果传递给CLR SqlFunction

<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

到目前为止,请发布任何代码,即使它不工作。方法签名特别有用。和哪个版本的SQL Server? – Yuck

+0

SQL Server 2008 R2。 –

回答

1

看到这个问题Pass table as parameter to SQLCLR TV-UDF它有链接到其他相关信息。简而言之,SQL CLR目前不支持TVP。

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

您也可以让存储过程设置临时表来共享。这是马虎,但可能最终成为你唯一的选择。

+0

Ahhh ...嗯,我认为XML类型不存在问题,因为我会得到数百万个必须传递的结果。看起来我们可能不得不重新考虑这个问题。 :(谢谢,虽然! –

相关问题