千家信息网

如何使用CLR存储过程来传回讯息

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍如何使用CLR存储过程来传回讯息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!CLR存储过程存放于类别库项目 SendYouDataReader 中,它示范如何
千家信息网最后更新 2026年11月04日如何使用CLR存储过程来传回讯息

这篇文章主要介绍如何使用CLR存储过程来传回讯息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

using Microsoft.SqlServer.Server;   namespace SendYouDataReader  { public class SendYouDataReaderClass   { [Microsoft.SqlServer.Server.SqlProcedure()]   public static void SendYouDataReader(decimal LowerSalary, decimal HigherSalary)  { SqlCommand cmd; SqlDataReader dr; // 使用内容连接来进行连接。   using (SqlConnection connection = new SqlConnection("context connection=true"))   { connection.Open();   cmd = new SqlCommand( "SELECT 员工编号,姓名,目前薪资 FROM dbo.章立民研究室 " + "WHERE 目前薪资 BETWEEN @LowerSalary AND @HigherSalary", connection);  cmd.Parameters.AddWithValue("@LowerSalary", LowerSalary);  cmd.Parameters.AddWithValue("@HigherSalary", HigherSalary);  dr = cmd.ExecuteReader(); // 呼叫 SqlPipe 对象的 Send 方法将查询结果直接传送给客户端 SqlContext.Pipe.Send(dr); }   }   }   }

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

USE 北风贸易;  GO   IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = 'SendYouDataReader') DROP PROCEDURE SendYouDataReader;   GO  IF EXISTS (SELECT * FROM sys.assemblies WHERE [name] = 'SendYouDataReader') DROP ASSEMBLY SendYouDataReader;   GO -- 登录组件SendYouDataReader.dll CREATE ASSEMBLY SendYouDataReader FROM   'C:\SQL2005Demo\CH13\SendYouDataReader\SendYouDataReader\bin\ SendYouDataReader.dll' WITH permission_set = Safe;   GO -- 建立一个会参考所登录之组件SendYouDataReader.dll 的存储过程   CREATE PROCEDURE dbo.SendYouDataReader ( @LowerSalary money, @HigherSalary money )   AS EXTERNAL NAME SendYouDataReader.[SendYouDataReader.SendYouDataReaderClass].SendYouDataReader;  GO EXEC sp_configure 'clr enabled', '1';  GO RECONFIGURE;   GO DECLARE @return_value int -- 执行CLR 存储过程   EXECUTE @return_value = dbo.SendYouDataReader @LowerSalary = 50000, @HigherSalary = 70000;

以上是"如何使用CLR存储过程来传回讯息"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

过程 存储 方法 组件 结果 登录 内容 客户 客户端 对象 数据 参考 处理 查询 讯息 篇文章 类别 薪资 也就是 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 互联网新科技 中国互联网科技股 盈实互联网科技 互联网的科技创新 九亚互联网科技 善班互联网科技有限公司 互联网金融科技平台 时间互联网络科技 卓越科技互联网 招聘 中国最先进互联网科技公司 宁波青枫互联网科技有限公司 北京华百购互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 互联网科技项目计划书材料类 燊美集互联网科技有限公司 阿里互联网科技企业 朱啸虎曾投资哪些互联网科技企业 伍佰万互联网科技怎么赚钱 富国互联网金融科技混合基金 美国互联网科技巨头监管 互联网科技媒体 科技互联网公司logo 居家互联网科技有限公司 乌鲁木齐新华智原互联网科技学校 东莞新华互联网科技学校 烟台灵鸽互联网科技有限公司 美国互联网科技公司 北京品多多互联网科技有限公司 北京瑞云互联网科技有限公司
0