激情久久久_欧美视频区_成人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 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: chinesexxxx刘婷hd| 久久夜视频| 国产精品久久久久久久久久久久久久久久 | 性生活香蕉视频 | 国产精品亚洲精品久久 | 毛片a级毛片免费播放100 | 国产99久久久国产精品 | 精品一区二区三区免费毛片 | 在线中文字幕亚洲 | 国产精品午夜一区 | 中文字幕在线观看精品 | 亚洲日本欧美 | 久久爽精品区穿丝袜 | 久久露脸国语精品国产91 | 毛片视频免费观看 | 黄污网站在线 | 91精品久久香蕉国产线看观看 | 9丨九色丨国产 | 一级α片免费看 | 港台三级在线观看 | 久草影音| 97干在线 | 午夜小影院 | 久久久久久麻豆 | 毛片中文字幕 | 亚洲一区二区中文字幕在线观看 | 91精品久久久久久久久 | 亚洲国产成人一区二区 | 日日狠狠久久偷偷四色综合免费 | 一边吃奶一边摸下娇喘 | 日本黄色大片免费 | 久久精品亚洲一区二区 | 桥本有菜免费av一区二区三区 | 日本一道aⅴ不卡免费播放 久久久久久久高清 | 欧美一级三级在线观看 | 在火车上摸两乳爽的大叫 | 欧美一级鲁丝片免费看 | 少妇一级淫片免费放4p | www.国产一区.com | 羞羞网站在线看 | 竹内纱里奈55在线观看 |