国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

分享:在存儲過程中使用另一個存儲過程返回的查詢結果集的方法

2024-08-31 00:56:11
字體:
來源:轉載
供稿:網友

  很多查詢類的存儲過程會返回一個表結構的結果集,如果在其他存儲過程中需要用到這個結果集,為了避免編寫重復的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不支持該方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 葫芦岛市| 临夏市| 苏州市| 武清区| 昌图县| 苍溪县| 阳谷县| 汉源县| 龙门县| 增城市| 伊川县| 枞阳县| 哈尔滨市| 桦甸市| 凤庆县| 大渡口区| 明光市| 贡嘎县| 宜黄县| 咸阳市| 伊宁县| 丹阳市| 洛川县| 永昌县| 库车县| 青田县| 武定县| 旌德县| 兴化市| 吉林省| 玛曲县| 蒲江县| 杭州市| 鸡泽县| 富蕴县| 九台市| 景谷| 黄龙县| 仙居县| 灵川县| 陵水|