当前位置:  数据库>sqlserver

分享:在存储过程中使用另一个存储过程返回的查询结果集的方法

    来源: 互联网  发布时间:2014-10-11

    本文导语:    很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。   如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某...

  很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。

  如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录。这个存储过程可以用于对借书记录的查询页面。

      现在需要实现另一个功能:将某时间段内的借书记录进行汇总分析。如按被借阅的书籍类型进行分组,并按各类书籍的借书总数进行排序。当然可以直接使用group by等方法直接重新进行查询,但为了说明本例,暂且用另一种方法进行实现,并且该方法也有其特有的优势(在文章最后会提到)。如下所示,建一个新的存储过程:

代码如下:

--获取借书记录分析情况
create proc sp_GetBorrowAnalysis
    @BeginTime    datetime,
    @EndTime    datetime
as
    --建一个表变量,结构与sp_GetBorrowRecord查询出的结果集相同
     declare @Record table
     (
      BookID int,                --书籍ID
      BookName varchar(100),    --书籍名称
      TypeID int,                --书籍类别ID
      CardID int                --借书卡ID
      CardName varchar(100)        --借书人姓名
     )

    --获取这段时间内的借书记录,并存入@Record表变量中
    insert into @Record
    exec sp_GetBorrowRecord @BeginTime,@EndTime

    --接下来,就可以像使用一个普通的表一样,对查出的数据(@Record中的数据)进行所需要的各项处理
    --。。。。。
go


  使用这种方法的好处是可以避免编写重复的代码,并且利于维护。如果借书记录的查询条件发生变化,比如除了根据时间范围进行筛选,还需要根据借书卡是否有效,或所借书籍是否仍然存在等条件进行筛选,那么只需要维护sp_GetBorrowRecord存储过程即可,不需要将所有涉及到查询借书记录的存储过程全部修改一遍。但这种方法在查询的数据量较大的情况下比较影响性能,查询速度较慢,在数据量较小的情况下这种差异并不明显。

     注:需要在sql server2005或更高版本中使用,低版本的sql server不支持该方法。


    
 
 

您可能感兴趣的文章:

  • c#获取存储过程返回值示例分享
  • mysql心得分享:存储过程
  • asp.net利用存储过程实现模糊查询示例分享
  • mssql 高效的分页存储过程分享
  • SQL Server创建链接服务器的存储过程示例分享
  • 扩展性很好的一个分页存储过程分享
  • sql server中批量插入与更新两种解决方案分享(存储过程)
  • 查询Sqlserver数据库死锁的一个存储过程分享
  • Oracle中返回结果集的存储过程分享
  • sql处理数据库锁的存储过程分享
  • jsp使用cookie存储中文示例分享
  • sql server中处理数据库锁的存储过程分享
  • mysql中用于数据迁移存储过程分享
  • 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享
  • Oracle存储过程的编写经验与优化措施(分享)
  • 针对SQL 2000 的分页存储过程代码分享
  • 队列的动态链式存储实现代码分享
  • MySql存储过程异常处理示例代码分享
  • PHP独立Session数据库存储操作类分享
  • PHP zip扩展Linux下安装过程分享
  • Android编程心得分享——JSON学习过程
  • linux挂载新硬盘过程分享
  • mysql 无法连接问题的定位和修复过程分享
  • PHP入门经历和学习过程分享
  • MySQL数据库INNODB表损坏修复处理过程分享
  • windwos下使用php连接oracle数据库的过程分享
  • CentOS 5.5下安装MySQL 5.5全过程分享
  • MySQL基准测试套件Benchmark安装DBI组件过程分享
  • 从Cocos2d-x2迁移到Cocos2d-x3的过程分享
  • RHEL6.2编译安装MySQL 5.6.16过程分享
  • 分享CentOS下MySQL最新版本5.6.13源码安装过程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java类中生成jfreechart,返回图表的url地址 代码分享
  • ​docker之轻量虚拟化技术——docker实战分享
  • php利用腾讯ip分享计划获取地理位置示例分享
  • 点对点文件分享客户端 PeerProject
  • 网络文件分享 Giver
  • IM及文件分享软件 iptux
  • P2P分享软件 Alliance P2P
  • 文件分享软件 eMule Plus
  • P2P 文件分享软件 ShakesPeer
  • 分享页面内容插件 ContentShare
  • 社交分享按钮生成JS库 Socialite.js
  • P2P分享软件 Phex
  • 前端代码编辑和分享平台 RunJS
  • jQuery 分享按钮插件 Share Button
  • 昨天考过SCJP快乐大家分享
  • P2P文件分享 GNUnet
  • 响应式社交分享按钮 RRSSB
  • 谁有免费的英文Office2003(日文也成)分享一下吧!
  • 谁有qmail的日常维护,日志分析的资料分享下?
  • 代码分享
  • 谁有xml和libxml2的说明文档,分享一下吧
  • Java代码分享工具 Java Gems


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3