【问题标题】:Passing in results of a query to a CLR SqlFunction将查询结果传递给 CLR SqlFunction
【发布时间】:2011-10-25 19:47:34
【问题描述】:

大家好,我有一个存储过程,它需要将结果集从另一个存储过程传递到 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

【问题讨论】:

  • 请发布您目前拥有的任何代码,即使它不起作用。方法签名特别有用。以及哪个版本的 SQL Server?

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


【解决方案1】:

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

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

您还可以让存储过程设置要共享的临时表。这很草率,但最终可能是你唯一的选择。

【讨论】:

  • 啊……好吧,我认为 XML 类型已经超出了问题范围,因为我将有数百万个结果需要传入。看起来我们可能不得不重新考虑这一点。 :( 不过谢谢!
猜你喜欢
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多