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
分享到:
相关推荐
是Inside Microsoft SQL Server 2005系列书中的第一本,SQL Server类的顶尖之作 全球公认SQL Server 2005经典著作,囊括大量鲜为人知的技术内幕,大师智慧、专家经验尽览无余。 本系列图书中文版得到了微软...
详细介绍SQL/CLR,让你用c#更轻松的来写存储过程,触发器等等
在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解释了,这里就直接说明实现方法了。...
·编写存储过程并使用T-SQL Data Definition Language(DDL)和Data Manipulation Language(DML) ·使用.NET CLR创建自定义的数据库对象.. ·使用ADO、ADO.NET和ADOMD.NET构建企业级数据库应用程序 ·开发和部署SQL ...
SQL Server CLR 存储过程实现数据的ZIP压缩和解压,可对表和视图里的数据进行压缩, 完全实现Zip的压缩和打包算法,不依赖磁盘上的文件。
Microsoft SQL Server 2005 Express Edition SQL Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以使用提供的链接快速、直接地发送电子邮件反馈。请使用英语发送您的反馈信息...
复制)、SQL开发(数据库设计、SQL Server与CLR集成、在SQL Server中使用 XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL、Service Broker 异步应用程序平台、空间数据类型跨实例链接、数据库管理自动...
目录 第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是C#与SQL Server的一个重要桥梁,非常好用
使用.Net Framework System.IO.Compression命名空间下的类来压缩/解压文件夹,并创建CLR扩展的存储过程,在SQL SERVER 2005中使用.
1、sqlserver2005概述 2、T-SQL查询 3、事务与锁 4、索引 5、约束、同义词、缺省值、自定义数据类型、规则 6、视图、存储过程、函数、游标与触发器 7、数据库安全 8、备份与恢复 9、分区表 10、数据库优化 11、开发...
第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
深入研究了Microsoft SQL Server 2005系统的基本结构和功能特点、安装规划和配置技术、数据库管理、Transact-SQL语言、表、操纵数据技术、索引技术、数据完整性技术、视图技术、存储过程技术、触发器技术、备份和...
然而,在SQL Server 2005中,我们可以用.NET家族的语言——主要是VB.NET和C#来编写存储过程(以及方法、触发器和其它组件)。让我们来熟悉一下关于编写存储过程新方法的5个常见问题。它们是非常值得我们探讨的。 1、...
第二部分展示了从概念建模到在SQL Server 2008上真正实现数据库的过程;第三部分深入探讨了SQL Server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的...
很早就知道可以用.NET为SQL Server2005及以上版本...首先要说明的是要在SQLServer中启用CLR必须是在SQLServer2005及以上版本,其次在默认情况下是没有启用CLR的,必须要显示设置为启用。比如我们要在ArticleCollectorD
将.NET程序集编码为十六进制字符串以安装在SQL Server中。
按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型。 这使得开发人员可以用任何CLR语言(如C#、VB.NET或C++等)来写存储过程、触发器和用户...