復(fù)制代碼 代碼如下:
create database Test
on primary ( name='Test_Data.mdf',
filename='D:\我的資料\sql\備份\Test_Data.mdf'
)
log on
(
name='Test_Data.ldf',
filename='D:\我的資料\sql\備份\Test_Data.ldf'
)
if object_id('tb') is not null drop table tb
create table tb
(
Col int
)
insert into tb select top 50 number from master..spt_values where type='P' and number>0
create proc SplitPage
(
@TableName nvarchar(50),
@PageSize int,--每頁顯示的數(shù)量
@CurrentPage int,--當(dāng)前第幾頁
@PageCol nvarchar(50),--排序字段
@OrderNo nvarchar(50)--排序方式(DESC,ASC)
)
as
/*
測試用的
declare @PageCol nvarchar(50)
declare @TableName nvarchar(50)
declare @OrderNo nvarchar(50)
declare @PageSize int
declare @CurrentPage int
set @PageCol='Col'
set @TableName='tb'
set @OrderNo='DESC'
set @PageSize=10
set @CurrentPage=4
*/
declare @sql nvarchar(1000)
set @sql=''
set @sql='
;with hgo as
(
select *,row_number() over(
order by '+@PageCol+' '+@OrderNo+') rank
from '+@TableName+'
)'
set @sql=@sql+'select Col from hgo where rank between '+ltrim((@CurrentPage-1)*@PageSize+1)+' and '+ltrim(@CurrentPage*@PageSize)
--print @sql
exec (@sql)
exec SplitPage 'tb',10,1,'Col','DESC'
Col
-----------
50
49
48
47
46
45
44
43
42
41
(10 行受影響)
exec SplitPage 'tb',10,3,'Col','DESC'
Col
-----------
30
29
28
27
26
25
24
23
22
21
(10 行受影響)
您可能感興趣的文章:- sqlserver 千萬數(shù)量級分頁存儲過程代碼
- sql 存儲過程分頁代碼 支持億萬龐大數(shù)據(jù)量
- SQL Server 2005通用分頁存儲過程及多表聯(lián)接應(yīng)用
- mssql 高效的分頁存儲過程分享
- 基于Sql Server通用分頁存儲過程的解決方法
- 深入sql server 2005 萬能分頁存儲過程的詳解
- SQL Server 分頁查詢通用存儲過程(只做分頁查詢用)
- SQL Server兩種分頁的存儲過程使用介紹
- SqlServer 2000、2005分頁存儲過程整理
- 實(shí)現(xiàn)SQL分頁的存儲過程代碼