基于SQL2005的CLR存储过程是怎样的,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就给大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。
在SQL Server 2005中,可以使用以下方法在SQL Server实例中创建数据库对象:基于Microsoft创建的程序集。NET框架公共语言运行库(CLR)是通过编程方法创建的。可以利用CLR提供的许多编程模型的数据库对象包括触发器、存储过程、函数、聚合函数和类型。
虽然Transact-SQL是专门为数据库中的直接数据访问和操作而设计的,但它没有提供编程结构来使数据操作和计算更容易。例如,Transact-SQL不支持数组、集合、for-each循环、位移位或类。
CLR存储过程提供面向对象的功能,如封装、继承和多态性。现在,相关代码可以很容易地组织在类和名称空间中。当使用大量服务器代码时,更容易组织和维护代码,一些数据库功能可以通过使用托管代码来实现。
对于计算和复杂的执行逻辑,基于CLR的托管代码比Transact-SQL更适合。托管代码的一个优点是类型安全,它完全支持许多复杂的任务,包括字符串处理和正则表达式。
中提供的函数可以访问成千上万个预先生成的类和例程。NET框架库。它可以从任何存储过程、触发器或用户定义的函数中轻松访问。基类库中包含的类提供了字符串运算、高级数学运算、文件访问、加密等功能。
Transact-SQL仍然用于需要很少或不需要过程逻辑的数据访问。对于CPU密集型函数和逻辑复杂的过程,最好使用托管代码。
让我们看看如何在Visual Studio 2005中基于SQL Server 2005创建CLR存储过程:
我们打开Visual Studio 2005,在对应的数据库列下有一个SQL Server项目,将创建一个名为StoredStu的新项目。确认后,将显示数据库连接对话框。数据库连接后,数据库中有以下两个表,如下所示:
学生信息表
国家(国家表)
创建一个新文件,选择“存储过程”选项,将其命名为StoredStu,并在文件中编写以下代码:
使用系统;使用System。数据;使用System。Data . SqlClient使用System。Data . SqlTypes使用Microsoft。服务器;publipartialclasstoredprocesses {[Microsoft . SQL server . server . sqlprocedure]Publisticvoidstoredtu(){//放置代码SqlPipesp=SqlContext。管道;stringsql=' Select * fromStuInfo ';使用(SqlConnectionconn=newSqlConnection(' context connection=true '){ 0
conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = sql; SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } [SqlProcedure] public static void GetStuInfo(string strNationCode) { string sql = "select Stu.StudentName, Stu.StudentNo, Stu.StudentUniversity,Na.NationName from StuInfo Stu inner join Nation Na on Stu.NationCode = Na.NationCode where Stu.NationCode = '" + @strNationCode + "'"; using (SqlConnection conn = new SqlConnection("context connection=true")) { conn.Open(); SqlPipe sp = SqlContext.Pipe; SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = sql; SqlParameter paramstrNationCode = new SqlParameter("@strNationCode", SqlDbType.VarChar, 11); paramstrNationCode.Direction = ParameterDirection.Input; paramstrNationCode.Value = strNationCode; cmd.Parameters.Add(paramstrNationCode); SqlDataReader rdr = cmd.ExecuteReader(); sp.Send(rdr); } } };
现在我们先对其进行编译,在“生成”菜单中选择“生成解决方案”,当编译完工程后,就需要为其进行部署了。同样选择“生成”菜单中的“部署解决方案”, 这样就会自动将写好的存储过程部署到 SQL Server 2005 中去。
为了确保SQL可以执行托管代码,我们还需要在SQL Server 2005中,执行下面的语句:
EXEC sp_configure "clr enabled", 1; RECONFIGURE WITH OVERRIDE; GO
执行显示的结果如下:
“配置选项'clr enabled' 已从0 更改为1。请运行RECONFIGURE 语句进行安装。”
这样就可以创建好CLR存储过程了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/152036.html