水滴石穿

渴望成为高手--Amy.Qiu
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server中使用CLR调用.NET方法

Posted on 2009-03-19 11:56  AmyQiu  阅读(213)  评论(0编辑  收藏  举报

为了使用CLR,我们需要做如下几步:
1、在.NET中新建一个类,并在这个类里新建一个public方法。
2、编译这个类为一个DLL。
3、在SQL Server中注册这个DLL。
4、新建一个SQL Server函数来访问指定的.NET方法。

HelloWorld示例:
(1)在Visual Studio中新建一个名为“SQLServerCLRTest”的类库项目。 然后,新建一个名为“CLRFunctions”的类,
并在其内添加一个名为“HelloWold”的方法,编译后生成一个DLL文件。代码如下:
public class CLRFunctions
{
public static string HelloWorld(string Name)
{return ("Hello " + Name);}
}

(2)启用CLR功能
exec sp_configure 'clr enabled',1 reconfigure
go

(3)注册DLL
需要在SQL Server中注册刚编译好的DLL。(路径为DLL文件路径)
CREATE ASSEMBLY asmHelloWorld FROM 'C:SQLServerCLRTest.dll'

(4)在SQL Server中调用.NET方法
写一个自定义函数,并在其内使用“EXTERNAL NAME”来通知SQL Server使用CLR功能,CLR方法语法:程序集名.[类名].方法名。
代码如下:
CREATE FUNCTION dbo.clrHelloWorld
(@name as nvarchar(200))
RETURNS nvarchar(200)
AS EXTERNAL NAME
asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld
自定义函数,首先声明一个nvarchar参数(.NET的string类型)(如果设置为
varchar并且后面使用了“EXTERNAL NAME”会报错)。然后使用“EXTERNAL NAME”来调用.NET方法。

(5)SELECT dbo.clrHelloWorld('Mark')