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 行受影响)

C#与SQL Server存储过程之一(创建):使用C#创建SQL Server的存储过程

 通常,开发人员使用的是T-SQL来创建SQL Server的存储过程、函数和触发器。 而现在的SQL Server 2005已经完全支持.NET通用语言运行时(CLR)了。 这就意味着,你可以使用....
  • hillspring
  • hillspring
  • 2008年04月18日 16:29
  • 7252

SQL Server 2005中创建CLR存储过程

SQL Server 2005中创建CLR存储过程2008-02-26 14:10在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2...
  • fangyuan303687320
  • fangyuan303687320
  • 2009年10月13日 11:32
  • 474

使用CLR Function代替T-SQL函数,优化检索效率

前言: 在使用存储过程查询数据中,T-SQL字符串拆分函数效率低下,这个时候我们可以采用CLR Function代替T-SQL函数,使用DLL执行字符串分解过程,并返回值到SQL中。测试复杂运行的速...
  • ddc201301
  • ddc201301
  • 2016年12月15日 15:28
  • 981

SqlServer CLR存储过程使用一例

近日开发一个系统,与莫懒惰单位合作,商量接口时考虑到由自己定义的报文进行通信,必定导致相当长的联调时间,而且近日诸项目缠身,没有足够的时间陪这种懒惰的单位玩,于是一时冲动就说开发一个数据库让他写入数据...
  • killlkilll
  • killlkilll
  • 2007年02月23日 10:51
  • 1226

简单创建与布署CLR存储过程

今天的博文是学习CLR存储过程,一个简单的例子,学会怎样创建,编译,布署在SQL中。CLR能做一些T-SQL无法做的事情,很多情况之后,它比T-SQL快。 打开VS2013,创建一个新专案,参考...
  • linybo
  • linybo
  • 2015年03月28日 14:33
  • 425

sql sever 2005 系统存储过程

1. sp_helpdb 用来显示有关数据库和数据库参数的信息。 fg: use student; go exec sp_helpdb 'student'; go 2. sp_spaceus...
  • ganggang112800
  • ganggang112800
  • 2012年12月26日 17:42
  • 264

SQL Server调试存储过程

SQL Server调试存储过程
  • wwwsq
  • wwwsq
  • 2015年04月09日 17:14
  • 2736

SQL Server实现CLR步骤及其需要配置注意的问题(转)

介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2....
  • ljh56789
  • ljh56789
  • 2014年08月06日 09:12
  • 4993

使用SQL SERVER2005的时候常常遇到中文字符为乱码的情况

使用SQL SERVER2005的时候常常遇到中文字符为乱码的情况,经过研究发现,设置SQL的排序规则可以解决这个问题。 1、登录服务器打开Microsoft SQL Server Managemen...
  • zhangkongzhongyun
  • zhangkongzhongyun
  • 2015年10月05日 14:42
  • 397

在Visual Studio 2005中调试SQL Server 2005的存储过程

介绍 SQL Server 2000可以让我们在查询分析器中直接调试存储过程(更多的信息请参看:用SQL Server 2000的查询分析器调试存储过程) 到了现在的SQL Server 2005,这...
  • jxufewbt
  • jxufewbt
  • 2007年08月13日 17:04
  • 2212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Sever 2005创建 CLR 存储过程
举报原因:
原因补充:

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