CLR SQL Server UDF 问题

Posted

技术标签:

【中文标题】CLR SQL Server UDF 问题【英文标题】:CLR SQL Server UDF Question 【发布时间】:2009-04-02 14:57:56 【问题描述】:

我正在尝试创建一个 CLR UDF,它接收一个字符串值,例如“Mike|John|Smith”。在 UDF 中,我解析出值并将它们返回到 DataTable 中。 C# 代码构建良好,我可以毫无问题地在 SQL 中创建指向 DLL 的程序集。

根据此消息来源,当我尝试告诉 SQL Server 如何将 Transact SQL 请求与 CLR 函数匹配时,问题就来了。 http://www.setfocus.com/technicalarticles/clrfunctionforsqlserver_2.aspx

或者我什至必须这样做?基本上我想接受一个字符串,解析出分隔值并将它们放入一个具有 3 个不同列 FN、MN、LN 的 DB 表中。使用 CLR UDF。

【问题讨论】:

【参考方案1】:

您需要有一个调用程序集的 SQL 存储过程或函数。 SQL 存储过程和 .NET 函数的参数需要匹配。例如,如果您的 .NET 程序集具有以下功能:

[SqlProcedure]
public static void ProcessData(string myString_)


您的 SQL 存储过程或函数必须如下所示:

CREATE PROCEDURE dbo.ProcessMyData (@InputText AS NVARCHAR(MAX))
AS EXTERNAL NAME SqlAssemblyName.ClassName.ProcessData
GO

【讨论】:

以上是关于CLR SQL Server UDF 问题的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 2008 CLR UDF 中使用 HttpWebrequest 解决不稳定行为

将 UDF 与 SQL Query 一起使用时出错

T-SQL里数据库工程师都不知道的秘密之SQL Server自定义函数UDF

复制 SQL Server CLR 函数

SQL server .Net CLR 文化

SQL Server 2008 - UDF 参数类型和返回类型