C# 代码
namespace SayHello{ using Microsoft.SqlServer.Server; public class SayHelloClass { [Microsoft.SqlServer.Server.SqlProcedure] public static void SayHello(out string greeting) { SqlMetaData colInfo = new SqlMetaData("问候", System.Data.SqlDbType.NVarChar, 80); SqlDataRecord greetingRecord = new SqlDataRecord(new SqlMetaData[] { colInfo }); greetingRecord.SetString(0, "你好,这是 CLR 存储过程练习"); SqlContext.Pipe.Send(greetingRecord); greeting = string.Format("现在时间是 {0} -- 达意科技", DateTime.Now.ToString()); } }}
建立存储过程
use AIMS;goif exists(select * from sys.procedures where [name] = 'SayHello')drop procedure SayHello;goif exists(select * from sys.assemblies where [name] = 'SayHello')drop assembly SayHello;gocreate assembly SayHellofrom 'f:\zp\SayHello.dll';gocreate procedure dbo.SayHello( @Greeting nvarchar(80) output)AS EXTERNAL NAME SayHello.[SayHello.SayHelloClass].SayHello;GOuse aims;goexec sp_configure 'clr_enabled','1';goreconfigure;go
使用方法
USE [AIMS]GODECLARE @return_value int, @Greeting nvarchar(80)EXEC @return_value = [dbo].[SayHello] @Greeting = @Greeting OUTPUTSELECT @Greeting as N'Greeting', @return_value as return_valueGO
注意事项
注意SQLServer支持的 .Net Framework 版本,查看方法: Microsoft SQL Server Management Studio -> 关于