SQL分頁查詢存儲過程代碼分享
更新時間:2016年12月25日 14:16:56 作者:欣宇
本文主要分享了SQL分頁查詢存儲過程的具體實例代碼,具有一定的參考價值,需要的朋友一起來看下吧
話不多說,請看代碼
------------------------------------- -----作者:張欣宇 -----時間:2013-06-28 -----簡介:根據(jù)參數(shù)和條件分頁查詢 ------------------------------------- Create proc [dbo].[Up_PagingQueryByParameter] ( ----- 表名或能查詢到結(jié)果的SQL語句{SQL語句左右必須有括號例:(select * from tbl1)} @TableName varchar(max), ----- 要查詢的列名語句; 可空默認* @ColumnName varchar(5000), ----- 用來排序的列; 不可為空 @OrderByColumnName varchar(50), ----- 排序desc(倒序5.4.3.2.1)或asc(正序1.2.3.4.5); 可空默認asc @ShrtBy varchar(4), ----- Where條件; 可空默認1=1 @Where varchar(5000), ----- 每頁顯示數(shù); 可空默認20 @PageShows int, ----- 當前頁數(shù); 可空默認1 @CurrentPage int, ----- 0為分頁查詢;其他為查詢?nèi)? 可空默認0 @IsPaging int ) as begin ----- 參數(shù)檢查及規(guī)范 if isnull(@Where,N'')=N'' set @Where = N'1=1'; if isnull(@ColumnName,N'')=N'' set @ColumnName = N'*'; if isnull(@PageShows,0)<1 set @PageShows = 20; if isnull(@CurrentPage,0)<1 set @CurrentPage = 1; if isnull(@ShrtBy,N'')=N'' set @ShrtBy = 'asc'; if isnull(@IsPaging,0)<>1 set @IsPaging = 0; ----- 定義 -- 拼接的SQL語句 declare @SqlStr nvarchar(max); declare @SqlWithStr nvarchar(max); -- 開始條數(shù) declare @StartIndex int; -- 結(jié)束條數(shù) declare @EndIndex int; ----- 賦值 set @StartIndex = (@CurrentPage-1)*@PageShows+1; print(@CurrentPage); print(@PageShows); print(@StartIndex); set @EndIndex = @CurrentPage*@PageShows; print(@EndIndex); set @OrderByColumnName=@OrderByColumnName+' '+@ShrtBy; ----- 分頁查詢 set @SqlWithStr = N'with temp as(select ROW_NUMBER() over(order by '+@OrderByColumnName+N') as RowNumber,'+@ColumnName+N' from '+@TableName+N' as tableName where '+@Where+N')'; if(@IsPaging = 0) begin set @SqlStr = @SqlWithStr + N' select '+@ColumnName+N' from temp where temp.RowNumber between '+convert(nvarchar(20),@StartIndex)+N' and '+convert(nvarchar(20),@EndIndex)+N''; ---- print(@SqlStr); exec(@SqlStr); ----- 總數(shù)查詢 set @SqlStr = @SqlWithStr + N' select count(*) as TotalNumber from temp'; ---- print(@SqlStr); exec(@SqlStr); end else begin set @SqlStr = @SqlWithStr + N' select '+@ColumnName+N' from temp'; ---- print(@SqlStr); exec(@SqlStr); end end
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
MySQL8.0.23版本的root密碼重置最優(yōu)解法
這篇文章主要介紹了MySQL8.0.23版本的root密碼重置最優(yōu)解法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03MySQL中使用group by 是總是出現(xiàn)1055的錯誤(推薦)
這篇文章主要介紹了MySQL中使用group by 是總是出現(xiàn)1055的錯誤,小編通過查閱相關(guān)資料才把問題解決,今天小編記錄下分享到腳本之家平臺,需要的朋友可以參考下2020-02-02CentOS 6.5 i386 安裝MySQL 5.7.18詳細教程
這篇文章主要介紹了CentOS 6.5 i386 安裝MySQL 5.7.18詳細教程,需要的朋友可以參考下2017-04-04