-- author : sql2005分頁儲存過程htl258(tony)
-- date : 2009-09-22 13:00:50
-- version: microsoft sql server 2008 (sp1) - 10.0.2531.0 (intel x86)
-- mar 29 2009 10:27:29
-- enterprise evaluation edition on windows nt 5.1 (build 2600: service pack 2)
--建立測試表
if object_id('[tb]') is not null
drop table [tb]
gocreate table [tb]([col] nvarchar(10))
--填充資料
insert tb
select top 26 col1=char(64+row_number()over(order by getdate()))
from sys.objects
--建立分頁的儲存過程
if object_id('[sp_page]') is not null
drop proc [sp_page]
gocreate proc sp_page
@tablename nvarchar(50),--表名
@pagerow int=0,--每頁顯示的行數(0為全部)
@pagenow int=1, --要顯示第幾頁(預設為)
@ordercol varchar(50)=null, --排序字段
@order bit=0 --排序規則0順序,1倒序
asdeclare @s nvarchar(max)
set @s='
with t as
select
rownum=row_number()over(order by '+isnull(@ordercol,'getdate()')+
case @order when 1 then ' desc' else ' asc' end+'),
from '+@tablename +'
select *
from t'
if @pagerow>0
set @s=@s+'
where rownum between '+ltrim(@pagerow*(@pagenow-1)+1)+'
and '+ltrim(@pagerow*@pagenow)
exec(@s)
go--返回tb表每頁行第頁的記錄
exec sp_page 'tb',6,2
rownum col
7 g
8 h
9 i
10 j
11 k
12 l
(6 行受影響)
exec sp_page 'tb',6,2,'col',2
rownum col
7 t
8 s
9 r
10 q
11 p
12 o
(6 行受影響)
--返回所有記錄
exec sp_page 'tb'
rownum col
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
21 u
22 v
23 w
24 x
25 y
26 z
SQL2005 分頁儲存過程
最近在使用sqlserver2005的資料庫編碼,查到有乙個row number order by 字段 的函式,通過該函式進行分頁非常的方便,請大家看看我寫的分頁儲存過程。分頁儲存過程 create procedure dbo proc testpage 表名 tablename nvarchar...
sql 2005分頁儲存過程
tblname varchar 255 表名 fldname varchar 255 欄位名 ordertype bit 0,設定排序型別,非 0 值則降序 iscount bit 0,設定排序型別,非 0 值則降序 strwhere varchar 3000 查詢條件 注意 不要加 where s...
SQL 2005 儲存過程分頁
create procedure dbo p pagetest sql nvarchar max sql語句不包括排序 curpage int,當前頁 pagerows int,頁面尺寸 order nvarchar 20 排序字段 ordertype nvarchar 10 排序型別倒序desc或...