SQL Sever 2005创建 CLR 存储过程

原创 2006年06月02日 11:40:00

在 SQL Server 2005 中,可以在 SQL Server 实例中使用以下方法创建数据库对象:基于 Microsoft .NET Framework 公共语言运行时 (CLR) 创建中的程序集使用编程方法创建。能够利用由 CLR 提供的众多编程模型的数据库对象包括触发器、存储过程、函数、聚合函数和类型。

在 SQL Server 中创建 CLR 存储过程分为下列几个步骤:

  • 使用 .NET Framework 支持的语言将存储过程定义为类的静态方法。有关如何对 CLR 存储过程进行编程的详细信息,请参阅 CLR Stored Procedures。然后,使用适当的语言编译器编译该类,在 .NET Framework 中生成程序集。

  • 使用 CREATE ASSEMBLY 语句在 SQL Server 中注册程序集。有关使用 SQL Server 中的程序集的详细信息,请参阅程序集

  • 通过使用 CREATE PROCEDURE 语句创建引用注册程序集的存储过程。

注意:
默认情况下,关闭 SQL Server 执行 CLR 代码的功能。您可以创建、更改和删除引用托管代码模块的数据库对象,但是除非通过使用 sp_configure (Transact-SQL) 启用了 clr enabled 选项,否则这些引用将不会在 SQL Server 中执行。

--实例

--A: .net 部分

using System.Data.SqlClient;
using Microsoft.SqlServer.Server;

public class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void SumRvalue(int Rank, out int Svalue)
    {
        //SqlContext.Pipe.Send("Hello world! It's now " + System.DateTime.Now.ToString() + "/n");
        using (SqlConnection connection = new SqlConnection("context connection=true"))
        {
            Svalue = 0;
            connection.Open();
            SqlCommand command = new SqlCommand("SELECT Rvalue FROM TB where Rank=" + Rank + "", connection);
            SqlDataReader reader = command.ExecuteReader();
            //SqlContext.Pipe.Send(reader);
            using (reader)
            {
                while (reader.Read())
                {
                    Svalue += reader.GetInt32(0);
                }
            }        

        }
    }
}

--B:数据库部分

--注册程序集
CREATE ASSEMBLY CLR_PROC_CALCRValue FROM 'D:/IISWebRoot/SQLCLR/SQLFunction/SQLFunction/bin/Debug/SQLFunction.dll'
GO
--创建CLR存储过程
CREATE PROCEDURE SumRvalue(@id int,@out int output )
AS EXTERNAL NAME CLR_PROC_CALCRValue.StoredProcedures.SumRvalue
--测试环境
CREATE TABLE TB(Rank INT,Rvalue INT)
Insert TB (Rank,Rvalue)  Values (1,20)
Insert TB (Rank,Rvalue)  Values (1,30)
Insert TB (Rank,Rvalue)  Values (1,44)
Insert TB (Rank,Rvalue)  Values (2,3)
Insert TB (Rank,Rvalue)  Values (2,3)
Insert TB (Rank,Rvalue)  Values (4,1)
--测试
declare @i int
EXEC SumRvalue 1, @i output
select @i
--结果
-----------
94

(1 行受影响)

相关文章推荐

SQL Server 2005 - 实作CLR存储过程

存储过程(Stored Procedures)是SQL Server 2005程序设计中最重要的一环,您将会发现,应用系统中的许多作业都会交由存储过程来完成。  在以下的操作步骤中,我们将带领大家利用...
  • sgear
  • sgear
  • 2011年04月20日 10:10
  • 737

Sql Sever存储过程简要教程

  • 2010年06月19日 11:21
  • 164KB
  • 下载

编写sql sever存储过程随笔

因需要写了一个存储过程,记录了里面用到的知识、以及出现的错误及解决方法...

VB.NET调用SQL Sever存储过程

概要: 本文介绍VB.NET使用创建并调用带有输入参数和输出参数的SQL Sever存储过程 本文代码首先检查要创建的存储过程再数据库中是否存在在。如果不存在,则代码创建一个存储过程,该过程一个参数来...

sql Sever的存储过程如何转换为mysql

[原文: http://bbs.51cto.com/thread-1115779-1.html ] 前一段时间,领导安排一个大概sql sever的300多行的存储过程转换成mysql的,把心得写出...
  • baodi_z
  • baodi_z
  • 2015年04月13日 11:09
  • 811

CLR创建存储过程.docx

  • 2012年09月04日 08:14
  • 600KB
  • 下载

SQL Server 2005 创建简单的存储过程 总结

SQL Server 2005 创建简单的存储过程 总结 2009-08-04 08:42 最近由于工作需要,简单了解了下SQL Server 2005 数据库创建简单的在存储过程。 一、首先说...

[SQL Server]使用CLR存储过程替代xp_cmdshell

使用CLR存储过程替代xp_cmdshell

sql server2005 分页存储过程

  • 2009年09月12日 14:25
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Sever 2005创建 CLR 存储过程
举报原因:
原因补充:

(最多只允许输入30个字)