CLR存储过程

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;
go

if exists(select * from sys.procedures where [name] = 'SayHello')
drop procedure SayHello;
go

if exists(select * from sys.assemblies where [name] = 'SayHello')
drop assembly SayHello;
go

create assembly SayHello
from 'f:\zp\SayHello.dll';
go

create procedure dbo.SayHello
(
	@Greeting nvarchar(80) output
)
AS EXTERNAL NAME SayHello.[SayHello.SayHelloClass].SayHello;
GO

use aims;
go

exec sp_configure 'clr_enabled','1';
go

reconfigure;
go

使用方法

USE [AIMS]
GO

DECLARE	@return_value int,
		@Greeting nvarchar(80)

EXEC	@return_value = [dbo].[SayHello]
		@Greeting = @Greeting OUTPUT

SELECT	@Greeting as N'Greeting', @return_value as return_value

GO

注意事项

注意SQLServer支持的 .Net Framework 版本,查看方法: Microsoft SQL Server Management Studio -> 关于

转载于:https://my.oschina.net/pp219/blog/679807

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CLR 存储过程是一种使用 .NET Framework 编写的存储过程,可以使用 C# 或 VB.NET 等编程语言来编写存储过程的实现代码。CLR 存储过程可以访问 .NET Framework 的所有功能和类库,可以在存储过程中使用异步编程模型、LINQ 查询、XML 处理、正则表达式等高级功能。 下面是一个使用 CLR 存储过程的示例: 1. 创建 CLR 存储过程项目:首先需要在 Visual Studio 中创建一个 CLR 存储过程项目。可以选择“SQL Server 项目” - “SQL Server CLR 项目”来创建项目。 2. 编写存储过程代码:在项目中添加一个类,然后编写存储过程的实现代码。存储过程需要继承自 SqlProcedure 类,并使用 SqlProcedureAttribute 特性来标识存储过程的名称、输入参数和输出参数等信息。例如: ``` using System.Data.SqlClient; using Microsoft.SqlServer.Server; public partial class StoredProcedures { [SqlProcedure(Name = "MyStoredProcedure")] public static void MyStoredProcedure(SqlString input, out SqlString output) { // 存储过程的实现代码 output = "Hello, " + input.Value; } } ``` 在上面的示例中,我们创建了一个名为 MyStoredProcedure 的存储过程,该存储过程接受一个输入参数 input 和一个输出参数 output,将输入参数和一个字符串拼接后赋值给输出参数。 3. 编译和部署存储过程:在 Visual Studio 中编译项目生成 DLL 文件,然后将 DLL 文件部署到 SQL Server 中。可以使用 CREATE ASSEMBLY 和 CREATE PROCEDURE 语句来创建 CLR 存储过程。例如: ``` CREATE ASSEMBLY MyAssembly FROM 'C:\MyAssembly.dll' WITH PERMISSION_SET = SAFE GO CREATE PROCEDURE MyStoredProcedure @input NVARCHAR(50), @output NVARCHAR(50) OUTPUT AS EXTERNAL NAME MyAssembly.[StoredProcedures].MyStoredProcedure GO ``` 在上面的示例中,我们使用 CREATE ASSEMBLY 语句来创建程序集,指定程序集的文件路径和权限级别。然后使用 CREATE PROCEDURE 语句来创建存储过程,指定存储过程的名称、输入参数和输出参数,并指定存储过程实现的 CLR 方法。 4. 调用存储过程:在 SQL Server 中使用 EXECUTE 或 CALL 语句来调用存储过程。例如: ``` DECLARE @output NVARCHAR(50) EXEC MyStoredProcedure 'world', @output OUTPUT SELECT @output ``` 在上面的示例中,我们使用 EXECUTE 语句来调用存储过程,传入一个字符串参数 'world',并将输出参数赋值给变量 @output。最后,我们使用 SELECT 语句来显示输出参数的值。 需要注意的是,CLR 存储过程可能会对数据库服务器的性能产生影响,因此需要谨慎使用。在使用 CLR 存储过程时,应该仔细考虑存储过程的安全性、性能和错误处理等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值