首页/电脑学习/内容

教大家SQL Server中的CLR编程(用.NET为SQL Server编写存储过程)

电脑学习2023-06-26 阅读()
[摘要]RegexOptions.Multiline;}return (SqlBoolean)(Regex.IsMatch(source, pattern, regexOptions));}/// <...
RegexOptions.Multiline; } return (SqlBoolean)(Regex.IsMatch(source, pattern, regexOptions)); } /// <summary> /// 发送邮件 /// </summary> /// <cke:param name="to"></cke:param>收件人邮件地址</cke:param> /// <cke:param name="from"></cke:param>发件人邮件地址</cke:param> /// <cke:param name="subject"></cke:param>邮件主题</cke:param> /// <cke:param name="body"></cke:param>邮件内容</cke:param> /// <cke:param name="username"></cke:param>登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</cke:param> /// <cke:param name="password"></cke:param>登录smtp主机时用到的用户密码</cke:param> /// <cke:param name="smtpHost"></cke:param>发送邮件用到的smtp主机</cke:param> [SqlProcedure] [SmtpPermission(SecurityAction.Assert)] [SecurityPermission(SecurityAction.Assert)] public static void SendMail(string to, string from, string subject, string body, string userName, string password, string smtpHost) { MailAddress addressFrom = new MailAddress(from); MailAddress addressTo = new MailAddress(to); MailMessage message = new MailMessage(addressFrom, addressTo); message.Subject = subject;//设置邮件主题 message.IsBodyHtml = true;//设置邮件正文为html格式 message.Body = body;//设置邮件内容 SmtpClient client = new SmtpClient(smtpHost); //设置发送邮件身份验证方式 //注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com client.Credentials = new NetworkCredential(userName, password); client.Send(message); } } }

编译通过之后,记住类库的物理全路径,比如:F:\VS2008\netskycn\NetSkycn.Data\bin\Release\NetSkycn.Data.dll,在这里要强调几点:一、对于将来提供给SQL Server调用的函数或者存储过程必须是静态方法,并且还必须带有SqlFunction或者SqlProcedure属性;二、对于一些需要访问外部网络资源和安全属性的还必须添加响应的属性(如本例中的SendMail方法,如果没有添加响应的属性在创建SQL Function/Procedure时会出现错误提示)。

现在我们开始遵循先为SQL Server创建程序集、后创建函数或者存储过程的顺序来操作,在操作过程中用到的SQL语句如下:

如果没有得到任何错误提示,则表示创建函数和存储过程成功。至此我们会看到如下情形:

教大家SQL Server中的CLR编程(用.NET为SQL Server编写存储过程)

这表示创建成功。

测试创建函数的SQL语句(查找article表中title字段是35个字段的数据):

[sql] view plaincopyprint?
  1. select * from article where dbo.IsMatch(Title,'^[\u4e00-\u9fa5]{3,5}$',3)=1

测试创建存储过程的SQL语句:

[csharp] view plaincopyprint?
  1. exec [dbo].SendMail @to='test@qq.com',@from='webmaster@qq.com',@subject='test',@body='This mail was sent by SQL Procedure',@userName='webmaster',@password='123',@smtpHost='smtp.qq.com'

以上代码在SQL Server 2005中文企业版、SQL Server 2008英文企业版测试通过。

可以看出在一些SQL语句不够灵活的情况下,可以使用.NET来编写存储过程和函数,通过以上步骤之后和调用SQL语句写的存储过程和函数没有区别,极大地方便了编程。

希望我的这个大家有所帮助,记得在这篇日志下面或者主页的留言板中留下你们的建议和反馈,这些对我们是最宝贵的财富,预祝大家快乐!有问题大家积极回帖讨论下哈!


学习教程快速掌握从入门到精通的电脑知识



第1页  第2页  第3页  第4页  第5页  第6页  第7页  第8页  第9页 

……

相关阅读