`
guanhuaing
  • 浏览: 1197829 次
文章分类
社区版块
存档分类
最新评论

SQL Server 2005 - 实作CLR存储过程

阅读更多

http://www.cnblogs.com/liminzhang/archive/2007/01/12/618324.html

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

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

图表1

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

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

图表2

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

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

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

图表3

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

using Microsoft.SqlServer.Server;

namespace SayHello
{
publicclassSayHelloClass
{
[Microsoft.SqlServer.Server.SqlProcedure()]
publicstaticvoidSayHello(refstring greeting)
{
SqlMetaData columnInfo = newSqlMetaData("问候", SqlDbType.NVarChar, 12);

SqlDataRecord greetingRecord = newSqlDataRecord(newSqlMetaData[] { columnInfo });

greetingRecord.SetString(0, "大家好,我是章立民!");

// 呼叫 Pipe 对象的 Send 方法将单一数据列结果集(也就是 SqlDataRecord 对象)
// 直接传送给客户端。
SqlContext.Pipe.Send(greetingRecord);

// 将文字符串指派给输出参数。

greeting = "现在时间是 " + DateTime.Now.ToString() + " --- 章立民研究室向您问好!";
}
}
}

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

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

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

图表4

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

图表5

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

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

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

USE 北风贸易;
GO

IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'SayHello')
DROP PROCEDURE SayHello;
GO

IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'SayHello')
DROP ASSEMBLY SayHello;
GO

-- 登录组件 SayHello.dll(请务必确认组件所在路径正确)
CREATE ASSEMBLY SayHello
FROM 'C:\SQL2005Demo\CH13\SayHello\SayHello\bin\SayHello.dll'
WITH permission_set = Safe;
GO ﹂──>组件的位置路径

-- 建立一个会参考所登录之组件 SayHello.dll 的存储过程
CREATE PROCEDURE dbo.SayHello
(
@Greeting nvarchar(80) OUTPUT
)
AS EXTERNAL NAME SayHello.[SayHello.SayHelloClass].SayHello;
GO
[命名空间.类别名称]



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

USE 北风贸易;
GO

EXEC sp_configure 'clr enabled', '1';
GO
RECONFIGURE;
GO

DECLARE @return_value int, @Greeting nvarchar(80);

-- 执行CLR存储过程并取得传回值与输出变量的值
EXECUTE @return_value = dbo.SayHello
@Greeting = @Greeting OUTPUT;

-- 检视传回值与输出变数的值

SELECT @return_value AS 传回值,
@Greeting AS "输出参数 @Greeting 之值";

图表6

章立民研究室撰写的数据库最佳书籍-SQL Server 2005数据库开发实战有完整的章节内容叙述CLR存储过程的撰写与使用方法,请自行参考之。

http://www.cnblogs.com/liminzhang/archive/2007/01/12/618324.html

分享到:
评论

相关推荐

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

     是Inside Microsoft SQL Server 2005系列书中的第一本,SQL Server类的顶尖之作  全球公认SQL Server 2005经典著作,囊括大量鲜为人知的技术内幕,大师智慧、专家经验尽览无余。   本系列图书中文版得到了微软...

    Professional SQL Server 2005 CLR Programming

    详细介绍SQL/CLR,让你用c#更轻松的来写存储过程,触发器等等

    在SQL Server 2005中创建CLR存储过程的详细介绍

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解释了,这里就直接说明实现方法了。...

    Microsoft SQL Server 2005开发指南

    ·编写存储过程并使用T-SQL Data Definition Language(DDL)和Data Manipulation Language(DML) ·使用.NET CLR创建自定义的数据库对象.. ·使用ADO、ADO.NET和ADOMD.NET构建企业级数据库应用程序 ·开发和部署SQL ...

    SQL Server CLR 存储过程实现数据的ZIP压缩和解压

    SQL Server CLR 存储过程实现数据的ZIP压缩和解压,可对表和视图里的数据进行压缩, 完全实现Zip的压缩和打包算法,不依赖磁盘上的文件。

    Microsoft SQL Server 2005 Express Edition SP3

    Microsoft SQL Server 2005 Express Edition SQL Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以使用提供的链接快速、直接地发送电子邮件反馈。请使用英语发送您的反馈信息...

    SQL Server 数据库技术---基础篇、数据库安全、SQL开发、数据库性能优化

    复制)、SQL开发(数据库设计、SQL Server与CLR集成、在SQL Server中使用 XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL、Service Broker 异步应用程序平台、空间数据类型跨实例链接、数据库管理自动...

    SQL Server 2008完全学习手册视频教程.zip

    目录 第1章 SQL Server 2008入门知识 SQL 2008完全学习手册 视频教程 第2章 使用SQL Server 2008管理工具 SQL 2008...第19章 使用CLR访问SQL Server 2008 第20章 使用SMO访问SQL Server 2008 第21章 SQL Server其他操作

    用CLR写存储过程快速入门

    用CLR写存储过程快速入门,CLR是C#与SQL Server的一个重要桥梁,非常好用

    SQL 2005 + CLR 压缩/解压 文件夹

    使用.Net Framework System.IO.Compression命名空间下的类来压缩/解压文件夹,并创建CLR扩展的存储过程,在SQL SERVER 2005中使用.

    SQL Server 2005(入门到精通教程+常考笔试面试试题)

    1、sqlserver2005概述 2、T-SQL查询 3、事务与锁 4、索引 5、约束、同义词、缺省值、自定义数据类型、规则 6、视图、存储过程、函数、游标与触发器 7、数据库安全 8、备份与恢复 9、分区表 10、数据库优化 11、开发...

    SQL2005入门到精通(10)

    第10章 存储过程 209 10.1 存储过程概述 209 10.2 设计存储过程 209 10.3 创建存储过程 210 10.3.1 ...rename、sp_renamedb存储过程 223 10.7.3 常用系统存储过程分类 223 10.8 建立CLR存储过程 227

    SQL_Server_2005基础教程

    深入研究了Microsoft SQL Server 2005系统的基本结构和功能特点、安装规划和配置技术、数据库管理、Transact-SQL语言、表、操纵数据技术、索引技术、数据完整性技术、视图技术、存储过程技术、触发器技术、备份和...

    在SQLServer 2005中编写存储过程

    然而,在SQL Server 2005中,我们可以用.NET家族的语言——主要是VB.NET和C#来编写存储过程(以及方法、触发器和其它组件)。让我们来熟悉一下关于编写存储过程新方法的5个常见问题。它们是非常值得我们探讨的。 1、...

    SQL Server 2008数据库设计与实现

    第二部分展示了从概念建模到在SQL Server 2008上真正实现数据库的过程;第三部分深入探讨了SQL Server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的...

    用.NET为SQLServer编写存储过程和函数

    很早就知道可以用.NET为SQL Server2005及以上版本...首先要说明的是要在SQLServer中启用CLR必须是在SQLServer2005及以上版本,其次在默认情况下是没有启用CLR的,必须要显示设置为启用。比如我们要在ArticleCollectorD

    将SQL Server CLR存储过程安装为十六进制字符串

    将.NET程序集编码为十六进制字符串以安装在SQL Server中。

    在SQL Server中使用CLR调用.NET方法实现思路

    按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型。 这使得开发人员可以用任何CLR语言(如C#、VB.NET或C++等)来写存储过程、触发器和用户...

Global site tag (gtag.js) - Google Analytics