復(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,--每頁(yè)顯示的數(shù)量
@CurrentPage int,--當(dāng)前第幾頁(yè)
@PageCol nvarchar(50),--排序字段
@OrderNo nvarchar(50)--排序方式(DESC,ASC)
)
as
/*
測(cè)試用的
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 千萬(wàn)數(shù)量級(jí)分頁(yè)存儲(chǔ)過(guò)程代碼
- sql 存儲(chǔ)過(guò)程分頁(yè)代碼 支持億萬(wàn)龐大數(shù)據(jù)量
- SQL Server 2005通用分頁(yè)存儲(chǔ)過(guò)程及多表聯(lián)接應(yīng)用
- mssql 高效的分頁(yè)存儲(chǔ)過(guò)程分享
- 基于Sql Server通用分頁(yè)存儲(chǔ)過(guò)程的解決方法
- 深入sql server 2005 萬(wàn)能分頁(yè)存儲(chǔ)過(guò)程的詳解
- SQL Server 分頁(yè)查詢通用存儲(chǔ)過(guò)程(只做分頁(yè)查詢用)
- SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹
- SqlServer 2000、2005分頁(yè)存儲(chǔ)過(guò)程整理
- 實(shí)現(xiàn)SQL分頁(yè)的存儲(chǔ)過(guò)程代碼