激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 數據庫 - Sql Server - 三種SQL分頁查詢的存儲過程代碼

三種SQL分頁查詢的存儲過程代碼

2019-12-12 16:22MSSQL教程網 Sql Server

三種SQL分頁查詢的存儲過程代碼,需要的朋友可以參考下。

代碼如下:


--根據MAX(MIN)ID 
CREATE PROC [dbo].[proc_select_id] 
@pageindex int=1,--當前頁數 
@pagesize int=10,--每頁大小 
@tablename VARCHAR(50)='',--表名 
@fields VARCHAR(1000)='',--查詢的字段集合 
@keyid VARCHAR(50)='',--主鍵 
@condition NVARCHAR(1000)='',--查詢條件 
@orderstr VARCHAR(500),--排序條件 
@totalRecord BIGINT OUTPUT--總記錄數 
AS 
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC ' 
IF ISNULL(@fields,N'')=N'' SET @fields=N'*' 
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1' 
DECLARE @sql NVARCHAR(4000) 
--IF(@totalRecord IS NULL) 
--BEGIN 
SET @sql=N'SELECT @totalRecord=COUNT(*)' 
+N' FROM '+@tablename 
+N' WHERE '+@condition 
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT 
--END 
IF(@pageindex=1) 
BEGIN 
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
ELSE 
BEGIN 
DECLARE @operatestr CHAR(3),@comparestr CHAR(1) 
SET @operatestr='MAX' 
SET @comparestr='>' 
IF(@orderstr<>'') 
BEGIN 
IF(CHARINDEX('desc',LOWER(@orderstr))<>0) 
BEGIN 
SET @operatestr='MIN' 
SET @comparestr='<' 
END 
END 
SET @sql=N'SELECT top '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid+@comparestr 
+N'(SELECT '+@operatestr+N'('+@keyid+N') FROM '+@tablename+N' WHERE '+@keyid 
+N' IN (SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '+@tablename+N' WHERE ' 
+@condition+N' '+@orderstr+N')) AND '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
GO 


--根據ROW_NUMBER() OVER 
CREATE PROC [dbo].[proc_select_page_row] 
@pageindex INT=1,--當前頁數 
@pagesize INT=10,--每頁大小 
@tablename VARCHAR(50)='',--表名 
@fields VARCHAR(1000)='*',--查詢的字段集合 
@keyid VARCHAR(50)='',--主鍵 
@condition NVARCHAR(1000)='',--查詢條件 
@orderstr VARCHAR(500),--排序條件 
@totalRecord BIGINT OUTPUT--總記錄數 
AS 
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC ' 
IF ISNULL(@fields,N'')=N'' SET @fields=N'*' 
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1' 
DECLARE @sql NVARCHAR(4000) 
-- IF @totalRecord IS NULL 
-- BEGIN 
SET @sql=N'SELECT @totalRecord=COUNT(*)' 
+N' FROM '+@tablename 
+N' WHERE '+@condition 
EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT 
--END 
IF(@pageindex=1) 
BEGIN 
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
ELSE 
BEGIN 
DECLARE @StartRecord INT 
SET @StartRecord = (@pageindex-1)*@pagesize + 1 
SET @sql=N'SELECT * FROM (SELECT ROW_NUMBER() OVER ('+ @orderstr +N') AS rowId,'+@fields+N' FROM '+ @tablename+N') AS T WHERE rowId>='+STR(@StartRecord)+N' and rowId<='+STR(@StartRecord + @pagesize - 1) 
EXEC(@sql) 
END 
GO 


--根據TOP ID 
CREATE PROC [dbo].[proc_select_page_top] 
@pageindex INT=1,--當前頁數 
@pagesize INT=10,--每頁大小 
@tablename VARCHAR(50)='',--表名 
@fields VARCHAR(1000)='',--查詢的字段集合 
@keyid VARCHAR(50)='',--主鍵 
@condition NVARCHAR(1000)='',--查詢條件 
@orderstr VARCHAR(500),--排序條件 
@totalRecord BIGINT OUTPUT--總記錄數 
AS 
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC ' 
IF ISNULL(@fields,N'')=N'' SET @fields=N'*' 
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1' 
DECLARE @sql NVARCHAR(4000) 
--IF(@totalRecord IS NULL) 
--BEGIN 
SET @sql=N'SELECT @totalRecord=COUNT(*)' 
+N' FROM '+@tablename 
+N' WHERE '+@condition 
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT 
--END 
IF(@pageindex=1) 
BEGIN 
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
ELSE 
BEGIN 
SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid 
+N' NOT IN(SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM ' 
+@tablename+N' WHERE '+@condition+N' '+@orderstr+N') AND '+@condition+N' '+@orderstr 
EXEC(@sql) 
END 
GO 

如對本文有所疑義或者對本文內容提供補充

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产99久久久久久免费看农村 | 国产亚洲精品成人a | 免费看日产一区二区三区 | 污片视频在线观看 | 成人辣文 | 看免费一级毛片 | 国产精品成人一区 | 免费黄色在线 | 亚洲欧美在线视频免费 | 一本在线高清码电影 | 高清久久久久 | 一区二区三区欧美日韩 | 91久久国产综合久久91猫猫 | 欧美一级黄视频 | 免费在线一级毛片 | 欧美性生活xxxxx | 国产精品视频一区二区三区四 | www.54271.com| videos 欧美| 亚洲午夜久久久久 | 成人做爽爽爽爽免费国产软件 | 欧美一级黄视频 | 国产色视频在线观看免费 | 精品久久久久久国产三级 | 亚洲啪 | 露脸各种姿势啪啪的清纯美女 | 黄色免费网站在线观看 | 毛片免费在线观看视频 | 午夜精品成人一区二区 | 天天色图片| av一道本 | 成人毛片视频免费看 | 99精品视频在线观看免费 | 久久激情小视频 | 在线看免费的a | 久久久久久久久久网 | 免费观看一区二区三区 | 国产精品a一 | 国产成人小视频在线观看 | 亚洲第一页在线观看 | 毛片区 |