网站大量收购独家精品文档,联系QQ:2885784924

关于sqlserver2008+clr集成.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于sqlserver2008clr集成

关于sql server clr 2008的集成 首先要启用clr集成 下面做一个简单的测试 首先创建好一个类库 编写一个简单的加法运算 上面是一串VS的代码 当我们用类库写的时候 他生成的是一个后缀为.dll的文件 然后我们在数据这边写这样的代码 上面的T-SQL语句中出现了一个程序集的概念 程序集这样来理解吧 就是一个.dll文件或.exe文件 我们现在用数据库操纵的是.dll数据集(我们暂且把数据集理解为一个.dll文件吧) 上面的代码再来消化一下 首先是创建程序集 然后是创建存储过程 存储过程的代码块中写的是 程序集名.命名空间.类名.方法名 当然VS中的方法名上面要一个标志 意思是代表此方法可以被调用 下面就是一个调用的过程 调用上面的存储过程输出的结果是50 当然@result是指整个程序集的返回值 也就是整个存储过程的返回值 还有一种方法就是output是输出参数的意思 就不用返回值了和上面代码的不同之处在于 上面的代码是用output来接收参数的 还有一个问题就是我们要传一个varchar()到程序集里面用string接收 这时会报类型不匹配 就是这种方法操作数据集我们要注意类型的匹配,当然这一块有待研究 返回的时候不能返回一个除int 外的其他类型(当然可以返回一个类似于数据集的东西) 下面我们来看一个如何一个或几个学生的信息传到数据库中; 当然在VS代码中要引入一个命名空间 using System.Data; 因为传递数据时 要传的是数据库那边的类型所以要引用这个命名空间 现在我们的思想了里面有有一张表结构在脑海里面 先创建表结构然后再给表结构赋值相应的值 在开启一个管道将其传递过去 代码如下: 一个表结构创建好了 同样跟上面一样就是创建程序集和存储过程了 创建的过程和上面的一样 先将查询出来的结果插入到一张表中 执行上面的语句得到下面的结果 exec sp_configure show advanced options, 1 RECONFIGURE go exec sp_configure clr enabled,1 RECONFIGURE go namespace CaluTest { public class Test { /*加*/ [Microsoft.SqlServer.Server.SqlProcedure] public static int AddCalc(int a,int b) { int result=0; result = (a + b)+; return result; } } } --先判断要创建的存储过程是否存在 use Student go --先删除存储过程 if exists(select *from sys.procedures where name=calc) drop procedure calc go --在删除程序集 if exists(select *from sys.assemblies where name=calcCell) drop assembly calcCell --先创建程序集 create assembly calcCell --程序集中要引用的dll文件的地址 from C:\Documents and Settings\Administrator\桌面\智能网络管理系统\CLR集成\VS代码\CaluTest\CaluTest\bin\Debug\CaluTest.dll with permission_set=safe --给程序集授权 go --在创建存储过程 create procedure calc @a int, @b int, @result int as external name calcCell.[CaluTest.Test].ShowResult --集的命名空间的类的方法 go declare @a int declare @b int declare @result int set @a=20 set @b=30 exec @result=calc @a,@b print @result public static void AddCalc(int a,int b,out int result) {result = (a + b);} --在创建存储过程 create procedure calc @a int, @b int, @r

您可能关注的文档

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档