程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 分享:在存儲進程中應用另外一個存儲進程前往的查詢成果集的辦法

分享:在存儲進程中應用另外一個存儲進程前往的查詢成果集的辦法

編輯:MSSQL

分享:在存儲進程中應用另外一個存儲進程前往的查詢成果集的辦法。本站提示廣大學習愛好者:(分享:在存儲進程中應用另外一個存儲進程前往的查詢成果集的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是分享:在存儲進程中應用另外一個存儲進程前往的查詢成果集的辦法正文


  許多查詢類的存儲進程會前往一個表構造的成果集,假如在其他存儲進程中須要用到這個成果集,為了不編寫反復的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不支撐該辦法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved