SQL分頁(yè)查詢(xún)存儲(chǔ)過(guò)程代碼分享
更新時(shí)間:2016年12月25日 14:16:56 作者:欣宇
本文主要分享了SQL分頁(yè)查詢(xún)存儲(chǔ)過(guò)程的具體實(shí)例代碼,具有一定的參考價(jià)值,需要的朋友一起來(lái)看下吧
話(huà)不多說(shuō),請(qǐng)看代碼
-------------------------------------
-----作者:張欣宇
-----時(shí)間:2013-06-28
-----簡(jiǎn)介:根據(jù)參數(shù)和條件分頁(yè)查詢(xún)
-------------------------------------
Create proc [dbo].[Up_PagingQueryByParameter]
(
----- 表名或能查詢(xún)到結(jié)果的SQL語(yǔ)句{SQL語(yǔ)句左右必須有括號(hào)例:(select * from tbl1)}
@TableName varchar(max),
----- 要查詢(xún)的列名語(yǔ)句; 可空默認(rèn)*
@ColumnName varchar(5000),
----- 用來(lái)排序的列; 不可為空
@OrderByColumnName varchar(50),
----- 排序desc(倒序5.4.3.2.1)或asc(正序1.2.3.4.5); 可空默認(rèn)asc
@ShrtBy varchar(4),
----- Where條件; 可空默認(rèn)1=1
@Where varchar(5000),
----- 每頁(yè)顯示數(shù); 可空默認(rèn)20
@PageShows int,
----- 當(dāng)前頁(yè)數(shù); 可空默認(rèn)1
@CurrentPage int,
----- 0為分頁(yè)查詢(xún);其他為查詢(xún)?nèi)? 可空默認(rèn)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語(yǔ)句
declare @SqlStr nvarchar(max);
declare @SqlWithStr nvarchar(max);
-- 開(kāi)始條數(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;
----- 分頁(yè)查詢(xún)
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ù)查詢(xún)
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
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
您可能感興趣的文章:
- 五種SQL Server分頁(yè)存儲(chǔ)過(guò)程的方法及性能比較
- SQL Server 分頁(yè)查詢(xún)通用存儲(chǔ)過(guò)程(只做分頁(yè)查詢(xún)用)
- sqlserver2005利用臨時(shí)表和@@RowCount提高分頁(yè)查詢(xún)存儲(chǔ)過(guò)程性能示例分享
- 深入sql server 2005 萬(wàn)能分頁(yè)存儲(chǔ)過(guò)程的詳解
- 基于Sql Server通用分頁(yè)存儲(chǔ)過(guò)程的解決方法
- mssql 高效的分頁(yè)存儲(chǔ)過(guò)程分享
- SQL Server 2005通用分頁(yè)存儲(chǔ)過(guò)程及多表聯(lián)接應(yīng)用
- MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)
- 三種SQL分頁(yè)查詢(xún)的存儲(chǔ)過(guò)程代碼
- SQL通用存儲(chǔ)過(guò)程分頁(yè),支持多表聯(lián)合
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)安全之防止撰改的方法
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)防止撰改的方法,需要的朋友可以參考下2014-07-07
MySQL8.0.23版本的root密碼重置最優(yōu)解法
這篇文章主要介紹了MySQL8.0.23版本的root密碼重置最優(yōu)解法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
解讀數(shù)據(jù)庫(kù)的嵌套查詢(xún)的性能問(wèn)題
這篇文章主要介紹了解讀數(shù)據(jù)庫(kù)的嵌套查詢(xún)的性能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Mysql常見(jiàn)bug及解決方案超詳細(xì)講解
在使用MySQL的過(guò)程中,相比大家都踩過(guò)不少坑,下面這篇文章主要給大家介紹了關(guān)于Mysql常見(jiàn)bug及解決方案超詳細(xì)講解的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
MySQL中使用group by 是總是出現(xiàn)1055的錯(cuò)誤(推薦)
這篇文章主要介紹了MySQL中使用group by 是總是出現(xiàn)1055的錯(cuò)誤,小編通過(guò)查閱相關(guān)資料才把問(wèn)題解決,今天小編記錄下分享到腳本之家平臺(tái),需要的朋友可以參考下2020-02-02
CentOS 6.5 i386 安裝MySQL 5.7.18詳細(xì)教程
這篇文章主要介紹了CentOS 6.5 i386 安裝MySQL 5.7.18詳細(xì)教程,需要的朋友可以參考下2017-04-04

