浅析CLR存储过程实现传回信息

为了让大家更了解如何实作 CLR存储过程来传回讯息,以下我们示范如何使用SqlPipe 对象之 Send 方法的第三种多载版本,将查询结果直接传送至客户端:

成都创新互联公司是一家专业提供平和企业网站建设,专注与成都网站制作、成都网站设计、H5场景定制、小程序制作等业务。10年已为平和众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

CLR存储过程存放于类别库项目SendYouDataReader 中,它示范如何使用 SqlPipe 对象的 Send 方法将查询结果(也就是 SqlDataReader 类别对象)直接传送至客户端。

特别要再次说明的是,虽然 Send 方法的执行效率略低于ExecuteAndSend 方法,但是在数据被传送至客户端之前,Send 方法能够提供***的弹性来处理数据,换句话说,如果您希望传送先前通过同处理序(In-Process)提供者所执行的查询结果,或是想要利用 SqlDataReader 的自订实作来预先处理数据,请使此多载版本的 Send 方法。完成之后的程序代码如下所示:

 
 
 
  1. using Microsoft.SqlServer.Server;  
  2. namespace SendYouDataReader  
  3. {  
  4. public class SendYouDataReaderClass  
  5. {  
  6. [Microsoft.SqlServer.Server.SqlProcedure()]  
  7. public static void SendYouDataReader(decimal LowerSalary, 
  8. decimal HigherSalary)  
  9. {  
  10. SqlCommand cmd;  
  11. SqlDataReader dr;  
  12. // 使用内容连接来进行连接。   
  13. using (SqlConnection connection = new SqlConnection
  14. ("context connection=true"))  
  15. {  
  16. connection.Open();  
  17. cmd = new SqlCommand(  
  18. "SELECT 员工编号,姓名,目前薪资 FROM dbo.章立民研究室 " +  
  19. "WHERE 目前薪资 BETWEEN @LowerSalary AND @HigherSalary", connection);  
  20. cmd.Parameters.AddWithValue("@LowerSalary", LowerSalary);  
  21. cmd.Parameters.AddWithValue("@HigherSalary", HigherSalary);  
  22. dr = cmd.ExecuteReader();  
  23. // 呼叫 SqlPipe 对象的 Send 方法将查询结果直接传送给客户端   
  24. SqlContext.Pipe.Send(dr);  
  25. }  
  26. }  
  27. }  
  28. }  

请执行如下所示之 SQL 指令,登录组件 SendYouDataReader.dll、建立一个参考所登录之组件 SendYouDataReader.dll 的CLR存储过程、然后执行此 CLR存储过程:

 
 
 
  1. USE   
  2. GO  
  3. IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'SendYouDataReader')  
  4. DROP PROCEDURE SendYouDataReader;  
  5. GO  
  6. IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'SendYouDataReader')  
  7. DROP ASSEMBLY SendYouDataReader;  
  8. GO  
  9. -- 登录组件SendYouDataReader.dll   
  10. CREATE ASSEMBLY SendYouDataReader  
  11. FROM  
  12. 'C:\SQL2005Demo\CH13\SendYouDataReader\SendYouDataReader\bin\  
  13. SendYouDataReader.dll'  
  14. WITH permission_set = Safe;  
  15. GO  
  16. -- 建立一个会参考所登录之组件SendYouDataReader.dll 的CLR存储过程   
  17. CREATE PROCEDURE dbo.SendYouDataReader  
  18. (  
  19. @LowerSalary money, @HigherSalary money  
  20. )  
  21. AS EXTERNAL NAME  
  22. SendYouDataReader.[SendYouDataReader.SendYouDataReaderClass].
  23. SendYouDataReader;  
  24. GO  
  25. EXEC sp_configure 'clr enabled', '1';  
  26. GO  
  27. RECONFIGURE;  
  28. GO  
  29. DECLARE @return_value int  
  30. -- 执行CLR 存储过程   
  31. EXECUTE @return_value = dbo.SendYouDataReader  
  32. @LowerSalary = 50000,  
  33. @HigherSalary = 70000;  

以上就是笔者介绍的关于CLR存储过程知识,希望能给大家带来帮助。

【编辑推荐】

  1. 浅析基于SQL2005的CLR存储过程
  2. 分析与对比CLR Via C#静态构造函数的性能
  3. 为你解疑:CLR是什么?
  4. linq to sql多表查询浅析
  5. linq to sql多表基础描述

当前标题:浅析CLR存储过程实现传回信息
转载来于:http://www.shufengxianlan.com/qtweb/news45/241845.html

成都网站建设公司_创新互联,为您提供网站建设品牌网站设计Google动态网站网站营销网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联