使用NET创建SQLServer存储过程和函数.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:5 大小:59KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

使用NET创建SQLServer存储过程和函数.docx

使用NET创建SQLServer存储过程和函数.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.qingyangblog.com/"家用吸氧机价格很早就知道可以用.NET为SQLServer2005及以上版本编写存储过程、触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQLServer中启用CLR,所以一直没有尝试。最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得。首先要说明的是要在SQLServer中启用CLR必须是在SQLServer2005及以上版本,其次在默认情况下是没有启用CLR的,必须要显示设置为启用。比如我们要在ArticleCollectorDB数据库中运行用.NET编写的函数或者存储过程,至少先要进行下面的SQL语句:[sql]HYPERLINK"http://blog.csdn.net/zhoufoxcn/article/details/7552311"\o"viewplain"viewplainHYPERLINK"http://blog.csdn.net/zhoufoxcn/article/details/7552311"\o"copy"copyexecsp_configure'clrenabled',1;--在SQLServer中启用CLRreconfigure;go--在ArticleCollectorDB数据库中设置TRUSTWORTHY为ONALTERDATABASE[ArticleCollectorDB]SETTRUSTWORTHYON这时可能会得到提示要重新启动SQLServer,如果有此提示则重新启动一下。接着我们在VS中进行编码,在这里我们将分别编写一个名为IsMatch的函数和一个名为SendMail存储过程。在VS中创建一个名为NetSkycn.Data的类库项目,添加一个SqlCLR的类,代码如下:[csharp]HYPERLINK"http://blog.csdn.net/zhoufoxcn/article/details/7552311"\o"viewplain"viewplainHYPERLINK"http://blog.csdn.net/zhoufoxcn/article/details/7552311"\o"copy"copyusingSystem.Data.SqlTypes;usingSystem.Net;usingSystem.Net.Mail;usingSystem.Security.Permissions;usingSystem.Text.RegularExpressions;usingMicrosoft.SqlServer.Server;namespaceNetSkycn.Data{///<summary>///在SQLServer环境中执行的CLR方法,注意提供给SQLServer调用的方法必须有SqlFunction/SqlProcedureAttribute///作者:周公///创建日期:2012-05-09///博客地址:http://blog.csdn.net/zhoufoxcnhttp://zhoufoxcn.blog.51cto.com///新浪微博地址:http://weibo.com/zhoufoxcn///</summary>publicsealedclassSqlCLR{///<summary>///判断字符串是否匹配正则表达式///</summary>///<paramname="source">要匹配的文本</param>///<paramname="pattern">进行匹配的正则表达式</param>///<paramname="options">正则表达式匹配选项,1为忽略大小写,2为多行匹配,3为忽略大小写且多行匹配</param>///<returns></returns>[SqlFunction(IsDeterministic=true,DataAccess=DataAccessKind.None)]publicstaticSqlBooleanIsMatch(stringsource,stringpattern,intoptions){if(string.IsNullOrEmpty(source)||string.IsNullOrEmpty(pattern)){returnSqlBoolean.False;}RegexOptionsregexOptions=RegexOptions.None;intoptionIgnoreCase=1;intoptionMultiline=2;if((options&