- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 高考真题360°全解密系列化学与STSE.ppt
- 28定语从句.doc
- 电梯(NICE1000)调试参数说明.doc
- vb6面对对象编程经典技术教程指南(推荐).doc
- 七年级上期末模拟卷.doc
- 实训5RJ-45水晶头的制作.doc
- 智能巡风发电系统.doc
- 八项学习制度.doc
- 2011-2012班长总结.doc
- 雷锋精神活在心中.doc
- 2025安徽宿州市萧县司法局萧县人民法院萧县公安局选任人民陪审员42人考前自测高频考点模拟试题及参考.docx
- 2025广东佛山市禅城区国有资产监督管理局下属企业招聘工作人员2人考前自测高频考点模拟试题带答案详解.docx
- 2025贵州装备制造职业学院引进高层次人才(博士)、高技能人才招聘9人考前自测高频考点模拟试题及答案.docx
- 2025北京市第五十七中学招聘9人考前自测高频考点模拟试题及答案详解1套.docx
- 2025广东中山长虹电器有限公司散件工艺工程师等岗位模拟试卷及参考答案详解.docx
- 2025广西农信社招考447人模拟试卷及答案详解一套.docx
- 2025广东省生物制品与药物研究所招聘12人(编制)模拟试卷及参考答案详解一套.docx
- 2025广西南宁市青秀区发展和改革局招聘2人考前自测高频考点模拟试题及参考答案详解一套.docx
- 2025河南新乡市延津县县外在编在岗教师回乡任教的模拟试卷带答案详解.docx
- 2025福建南平市山点水园林有限公司招聘及拟进入考前自测高频考点模拟试题参考答案详解.docx
文档评论(0)