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

  很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的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

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/234486.html

(0)
上一篇 2022年1月23日
下一篇 2022年1月23日

相关推荐

发表回复

登录后才能评论