using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
namespace SqlServerProject1
{
public class demo
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void ClrProc() {
SqlContext.Pipe.Send("Hello World");
}
}
}
记得要引入using Microsoft.SqlServer.Server这个命名空间。在方法体中,使用了如下代码:
--查看系统配置
SELECT * FROM sys.configurations
ORDER BY name
GO
--启用clr
sp_configure 'clr enabled',1
go
RECONFIGURE;
GO
准备完毕后,开始创建程序集和CLR存储过程:
--创建程序集
CREATE ASSEMBLY SqlServerProject1
FROM
N'C:\Users\Administrator\Documents\visual studio 2010\Projects\Database1\SqlServerProject1\bin\Debug\SqlServerProject1.DLL'
WITH permission_set=SAFE
GO
--
--DROP ASSEMBLY SqlServerProject1
--go
--创建CLR存储过程 (程序集.命名空间.类型.方法名)
CREATE PROC dbo.helloworld
AS EXTERNAL NAME SqlServerProject1.[SqlServerProject1.demo].ClrProc
go
--执行Clr存储过程
EXEC helloworld
go
注意,之前的项目中编译后的DLL文件的路径(推荐使用绝对路径),权限直接给safe。创建CLR存储过程,其实和普通的proc差不多,只不过多了一句(大致意思就是指定程序集中指定的命名空间下的类和对应的方法)
可以像调用普通的存储过程一样去执行它。看看结果,果然有了”HelloWorld“。呵呵。当然,这只是最简单的,目的是教大家如何创建。
当然,也可以创建复杂一点的存储过程/函数/触发器等。我就拿存储过程为例,做一个稍微复杂的,返回一个SqlDataReader对象。
直接在项目上右键,新建,选择存储过程即可(刚才新建一个普通类,是为了让大家理解其基本的实现和对应关系)。如图: