实作CLR存储过程十四步

开发 后端
文章主要介绍了CLR存储过程,下面是一个实际建立一个CLR存储过程(采用VisualC#),并示范如何使用它,希望给你带来帮助。

存储过程是SQLServer2005程序设计中最重要的一环,您会发现,应用系统中的许多作业都会交由存储过程来完成。在以下的操作步骤中,我们带大家利用VisualStudio2005整合式开发环境,实际建立一个CLR存储过程(采用VisualC#),并示范如何使用它:

1.如图表1所示,选取MicrosoftVisualStudio2005菜单指令来开启VisualStudio2005的整合式开发环境。

VisualStudio2005的整合式开发环境 

2.从「项目」菜单中选取「新增/项目」指令。

3.如图表2所示,选取「类别库」模板,然后依序指定项目名称(SayHello)、存放位置、以及方案名称(SayHello)之后,按一下「确定」按钮。

类别库

4.于VisualStudio2005整合式开发环境的「方案总管」中,使用鼠标右键按一下预设建立的Class1.cs并从快捷菜单中选取「删除」指令以便将它删除。

5.从「项目」菜单中选取「加入新项目」指令。

6.如图表3所示,于「加入新项目」对话框中,选取「类别」模板,然后以SayHelloClass.cs作为类别档的文件名称,然后按一下「加入」按钮。

对话框页面

7.于程序代码编辑器中,将SayHelloClass类别的程序代码改写如下:

  1. usingMicrosoft.SqlServer.Server;  
  2. namespaceSayHello  
  3. {  
  4. publicclassSayHelloClass  
  5. {  
  6. [Microsoft.SqlServer.Server.SqlProcedure()]  
  7. publicstaticvoidSayHello(refstringgreeting)  
  8. {  
  9. SqlMetaDatacolumnInfo=newSqlMetaData("问候",SqlDbType.NVarChar,12);  
  10. SqlDataRecordgreetingRecord=newSqlDataRecord(newSqlMetaData[]{columnInfo});  
  11. greetingRecord.SetString(0,"大家好,我是章立民!");  
  12. //呼叫Pipe对象的Send方法将单一数据列结果集(也就是SqlDataRecord对象)  
  13. //直接传送给客户端。  
  14. SqlContext.Pipe.Send(greetingRecord);  
  15. //将文字符串指派给输出参数。  
  16. greeting="现在时间是"+DateTime.Now.ToString()+"---章立民研究室向您问好!";  
  17. }  
  18. }  

上述程序代码中的SayHello程序是一个公用静态方法,而它也就是CLR存储过程所实际呼叫的对象。

8.按一下工具列中的「储存」按钮。

9.如图表4所示,使用鼠标连按两下「方案总管」中的Properties节点,一开始会显示出「应用程序」索引卷标页面,您可以去设定组件名称与跟命名空间。不过以本实作演练而言,请采用默认值,不要更改。

索引卷标页面

10.按一下左侧的「编译」索引卷标来切换至其页面,并且将「建置输出路径」设定成bin然后按一下工具列中的「储存」按钮。

编译

11.从「建置」菜单中选取「建置SayHello」指令。

12.好的,我们现在已经完成组件的建置作业,现在必须回到SQLServerManagementStudio中,以便登录组件并建立指向该组件的存储过程。

13.请您于SQLServerManagementStudio中执行以下的程序代码,以便使用CREATEASSEMBLY陈述式来登录组件SayHello.dll,然后使用CREATEPROCEDURE陈述式建立一个会参考所登录之组件SayHello.dll的存储过程:

  1. USE北风贸易;  
  2. GO  
  3. IFEXISTS(SELECT*FROMsys.proceduresWHERE[name]='SayHello')  
  4. DROPPROCEDURESayHello;  
  5. GO  
  6. IFEXISTS(SELECT*FROMsys.assembliesWHERE[name]='SayHello')  
  7. DROPASSEMBLYSayHello;  
  8. GO  
  9. --登录组件SayHello.dll(请务必确认组件所在路径正确)  
  10. CREATEASSEMBLYSayHello  
  11. FROM'C:\SQL2005Demo\CH13\SayHello\SayHello\bin\SayHello.dll'  
  12. WITHpermission_set=Safe;|  
  13. GO﹂──>组件的位置路径  
  14. --建立一个会参考所登录之组件SayHello.dll的存储过程  
  15. CREATEPROCEDUREdbo.SayHello  
  16. (  
  17. @Greetingnvarchar(80)OUTPUT  
  18. )  
  19. ASEXTERNALNAMESayHello.[SayHello.SayHelloClass].SayHello;  
  20. GO↓  
  21. [命名空间.类别名称] 

14.请您继续于SQLServerManagementStudio中执行以下的程序代码,以便尝试执行我们所建立的CLR存储过程(执行结果如图表6所示):

  1. USE北风贸易;  
  2. GO  
  3. EXECsp_configure'clrenabled','1';  
  4. GO  
  5. RECONFIGURE;  
  6. GO  
  7. DECLARE@return_valueint,@Greetingnvarchar(80);  
  8. --执行CLR存储过程并取得传回值与输出变量的值  
  9. EXECUTE@return_value=dbo.SayHello  
  10. @Greeting=@GreetingOUTPUT;  
  11. --检视传回值与输出变数的值  
  12. SELECT@return_valueAS传回值,  
  13. @GreetingAS"输出参数@Greeting之值";  


 
执行结果

【编辑推荐】

  1. 图文讲解.NET CLR是什么
  2. 使用CLR存储过程来传回讯息实战案例
  3. 经典案例之创建CLR存储过程
  4. 概括Visual Studio CLR调试器两种方法
  5. Visual Studio中SQL SERVER CLR代码调试工具使用讲解
责任编辑:田树 来源: 博客
相关推荐

2009-09-18 10:40:05

CLR存储过程

2009-09-18 14:09:57

SQL CLR存储过程

2009-10-22 13:02:47

SQL CLR存储过程

2009-10-22 14:05:55

CLR存储过程

2009-09-18 10:55:17

CLR存储过程

2009-10-22 15:09:40

CLR存储过程

2009-09-17 19:19:17

CLR存储过程

2010-04-16 11:11:46

Oracle存储过程

2010-04-15 17:45:26

Oracle存储过程

2010-04-16 12:58:48

Oracle sql

2010-04-16 11:22:08

Oracle存储过程

2010-06-30 11:21:42

UML业务建模

2010-04-30 09:34:24

Oracle多条件查询

2010-05-05 14:55:15

Oracle存储过程

2009-09-03 14:26:17

Jit编译

2011-12-28 15:41:49

WCF

2017-03-14 14:04:24

Python机器学习

2009-08-24 11:36:27

CLR加载过程

2010-09-07 13:18:49

ROS构建PPPOE服

2020-11-26 10:33:44

MySQL存储函数
点赞
收藏

51CTO技术栈公众号