实作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类别的程序代码改写如下:

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

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

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

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

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

索引卷标页面

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

编译

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

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

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

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

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

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


 
执行结果

【编辑推荐】

  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 14:05:55

CLR存储过程

2009-10-22 13:02:47

SQL 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加载过程

2009-10-22 12:25:21

SQL SERVER调

2010-09-07 13:18:49

ROS构建PPPOE服
点赞
收藏

51CTO技术栈公众号