日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql 2000 分页

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 2000 分页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?


create PROCEDURE [dbo].[Proc_GetPageList]

(
?? @Tables varchar(1000),????????? --表名
?? @PK varchar(100),?????????????? --主鍵???
?? @Fields varchar(1000) = '*',??? --查詢的字段
???@SortField varchar(200) = NULL, --排序的字段
???@SortType varchar(10)= 'ASC',?? --排序方式
?? @PageIndex int = 1,???????????? --頁碼索引
?? @PageSize int = 10,??????????? --頁碼大小
?? @Filter varchar(1000) = NULL,?? --過濾條件
???@PageCount int = 1 output,????????????????? ----查詢結果分頁后的總頁數
?? @RecordCounts int = 1 output??????????????? ----查詢到的記錄數

)

AS

SET NOCOUNT ON

declare @FieldName nvarchar(50)

declare @SqlSort nvarchar(250)

declare @SqlCount nvarchar(2000)

declare @FromTemp nvarchar(1000)

declare @SqlResult nvarchar(4000)
declare @PageMinBound int?

declare @PageMaxBound int

--------首先生成排序方法---------

if @SortType='ASC'? --升序
?? begin
????? if not(@SortField is null)
???? set @SqlSort = ' Order by ' + @SortField
????? else
???? set @SqlSort = ' Order by ' + @PK
?? end

else??????????? --降序
?? begin
??? if not(@SortField is null)
???? set @SqlSort = ' Order by ' + @SortField + ' DESC'?
??? else
???? set @SqlSort = ' Order by ' + @PK + ' DESC '
?? end

--------生成查詢語句--------

if @Filter is null or @Filter='' --沒有設置顯示條件
??? begin
??? set @FromTemp = ' From ' + @Tables
??? end

else
??? begin
??? set @FromTemp = ' From ' + @Tables + ' where ' + @Filter
??? end

set @SqlCount= 'select @RecordCounts=Count(' + @PK + ') '+@FromTemp

----取得查詢結果總數量-----
exec sp_executesql @SqlCount,N'@RecordCounts int out ',@RecordCounts out

--取得分頁總數

if @RecordCounts<= @PageSize
set @PageCount = 1

else
set @PageCount = (@RecordCounts / @PageSize) + 1

if @PageIndex=1

begin? --第一頁用TOP方法來獲取當前頁記錄
? set @SqlResult='select top '+str(@PageSize)+' '+@Fields+' '+@FromTemp+' '+@SqlSort

end

else

begin --用臨時表獲取當前頁計錄
?? set @PageMinBound=(@Pageindex-1)*@Pagesize
?? set @PageMaxBound=@PageMinBound+@Pagesize
?? create table #Pageindex (id int identity(1,1) not null,nid int)
?? set rowcount @PageMaxBound
?? set @SqlResult='insert into #Pageindex(nid) select '+@PK+' '+@FromTemp+' '+@SqlSort
?? set @SqlResult=@SqlResult+'?? select '+@Fields+' from '+@Tables+'? a,#Pageindex p
??? where?? a.'+@PK+'=p.nid and p.id>'+str(@PageMinBound)+' and p.id<='+str(@PageMaxBound)

end

print @SqlResult
exec sp_executesql @SqlResult

?


GO

轉載于:https://www.cnblogs.com/DJYBlog/p/3848401.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的sql 2000 分页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。