一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - 分頁存儲過程代碼

分頁存儲過程代碼

2019-11-01 14:32mssql教程網 Sql Server

一個分頁存儲過程分享

代碼如下:


/* 
*@curentpage 當前頁 
*@pagesize 每頁記錄數 
*@TableName 表名 
*@key 主鍵(自動排序) 
*@where 查詢條件 
1)空為 null 
2)有查詢條件不要帶where 
*@order '0'表示 desc '1'是asc 
*@pageCount 總頁數 
*/ 
create procedure Page 
@currentpage int,@pagesize int, 
@TableName varchar(30),@key varchar(30), 
@where varchar(50),@order varchar(1), 
@pageCount int ,@str varchar(450) output 
as 
begin 
---------------執行的sql語句------------ 
declare @sql nvarchar(400),@ordreby nvarchar(200) 
declare @tempsql1 varchar(200),@tempsql2 varchar(200) 
---------------記錄總數----------------- 
declare @count int 
---------------臨時變量------------------------ 
declare @temp1 int,@temp2 int 

set @TableName=' '+@TableName+' ' 
set @key=' '+@key+' ' 

if @order='0' 
set @ordreby=' order by '+@key+'desc' 
else 
set @ordreby=' order by '+@key 

if @where='null' 
set @sql='select @count = count(*) from '+ @TableName 
else 
set @sql='select @count = count(*) from '+ @TableName+' where '+@where 

------------@count 付值(聲明變量@count 在說明是output 內型)--------------------------- 
exec sp_executesql @sql,N'@count int out',@count out 
------------求總頁數------------------------------ 
if (@count%@pagesize)=0 
set @pagecount=@count/@pagesize 
else 
set @pagecount=@count/@pagesize+1 
-----------判斷顯示當前頁是否異常------------------ 
if @currentpage>@pagecount 
set @currentpage=@pagecount 
if @currentpage<1 
set @currentpage=1 
----------記錄數小于頁面顯示記錄數----------------- 
if(@currentpage=1) 
begin 
if @where='null' 
set @where=' ' 
else 
set @where=' where '+@where 
set @sql = 'select top'+ str(@pagesize)+' * from '+@TableName+@where+@ordreby 
end 
else 
begin 
/**//* ---------------desc---------------------- 
*@temp1表示前面的記錄 
*@temp2表示后面的記錄 
*假設一共77個記錄,每次取10個。取67~58(第2頁),去掉前面的57(1~57)個和后面的10個(77~66) 
*/ 
if @order=0 
begin 
set @temp1 = @count-@currentpage*@pagesize 
if @temp1<0 
set @temp1=0 
set @temp2 = (@currentpage - 1)*@pagesize 
if @where='null' 
begin 
set @tempsql1='select top ' + str(@temp1)+' '+@key+' from ' + @TableName+' order by ' +@key 
set @tempsql2='select top ' + str(@temp2)+' '+@key+' from ' + @TableName + @ordreby 
end 
else 
begin 
set @tempsql1='select top ' + str(@temp1)+' '+@key+' from ' + @TableName+' where '+@where+' order by ' +@key 
set @tempsql2='select top ' + str(@temp2)+' '+@key+' from ' + @TableName+' where '+@where+@ordreby 
end 
set @sql=' select top ' + str(@pagesize) + ' * from ' + @TableName + ' where '+@key+ ' not in ' 
set @sql= @sql+' ( '+ @tempsql1 +' ) and ' 
set @sql= @sql+@key+ ' not in ( '+@tempsql2 +' ) ' 
if @where='null' 
set @sql= @sql+@ordreby 
else 
set @sql= @sql+' and '+@where+@ordreby 
end 
/**//* ----------------asc--------------------- 
* @temp 表示前面顯示的記錄總數 
* 去掉 @temp 在取出 pagesize 個即可 
*/ 
else 
begin 
set @temp1=(@currentpage-1)*@pagesize 
if @where='null' 
set @tempsql1='select top '+ str(@temp1)+' '+@key+' from ' + @TableName + @ordreby 
else 
set @tempsql1='select top '+ str(@temp1)+' '+@key+' from ' + @TableName ++' where '+@where+@ordreby 
set @sql=' select top ' + str(@pagesize) + ' * from ' + @TableName + ' where '+@key+ ' not in ' 
set @sql=@sql+' ( '+@tempsql1+' ) ' 
if @where='null' 
set @sql= @sql+@ordreby 
else 
set @sql= @sql+' and '+@where+@ordreby 

end 
/**//* -------------------------------------*/ 
end 
set @str=@sql 
--exec sp_executesql @sql 

end 

GO 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女草b| 高h喷水荡肉爽文np肉色文 | 色多多多 | 免费二级毛片免费完整视频 | 亚洲精品国产在线观看 | 99rv精品视频在线播放 | 欧美有码 | 欧美人xxxxxbbbb | 欧美日韩国产超高清免费看片 | 强波多野结衣女教师 | 爱情岛论坛亚洲自拍 | 小妇人电影免费完整观看2021 | 国产福利视频一区二区微拍视频 | 日剧整部剧护妻狂魔免费观看全集 | 精品卡1卡2卡三卡免费视频 | 精品亚洲综合在线第一区 | 不卡一区二区三区卡 | 九九热精品免费观看 | 男人女人叉叉叉 | 亚洲 欧美 中文 日韩欧美 | 欧美日韩一二三区免费视频观看 | 91视频a| 国产视频福利 | 国内精品免费一区二区三区 | 亚洲男人天堂网站 | 天美麻豆 | 黑人同学征服教师麻麻 | 香蕉tv亚洲专区在线观看 | 日韩视频在线精品视频免费观看 | 免费大片 | 希岛爱理作品在线观看 | 亚洲天堂视频在线观看免费 | 亚洲阿v天堂2018在线观看 | 日韩精选| 精品亚洲午夜久久久久 | 啪啪免费入口网站 | 国产免费不卡视频 | 国产精品一二区 | 无耻之徒第十一季在线观看 | yellow片在线观看 | 亚洲视频一区在线播放 |