create
procedure
sp_paging
@tblname
varchar
(255
) ,
--表名
@strgetfields
varchar
(1000) =
'*',
--需要返回的列
@fldname
varchar
(255)=
'',
--排序的欄位名
@pagesize
int=
10,
--頁尺寸
@pageindex
int=1,
--頁碼
@recordcount
int=
0output,
--返回記錄總數
@pagecount
int=
0output,
--分頁總數
@ordertype
int=0,
--設定排序型別, 非 0 值則降序
@strwhere
varchar
(1500) =
''--
查詢條件 (注意: 不要加 where)
asdeclare
@strsql
nvarchar
(3000
) --
主語句declare
@strtmp
varchar
(110
) --
臨時變數
declare
@strorder
varchar
(400
) --
排序型別
begin
if@strwhere
!=''
set@strsql='
select @recordcount = count(*) from '+
@tblname+'
where '+
@strwhere
else
set@strsql='
select @recordcount = count(*) from '+
@tblname
endexec
sp_executesql
@strsql,n'
@recordcount int out ',
@recordcount
outif
@recordcount
%@pagesize=0
set@pagecount
=@recordcount
/@pagesize
else
set@pagecount
=@recordcount
/@pagesize+1
--以上**的意思是計算出記錄是總數和求出總共的頁數
begin
if@ordertype!=0
begin
set@strtmp='
<(select min
'set
@strorder='
order by '+
@fldname+'
desc'--
如果@ordertype不是0,就執行降序,這句很重要!
endelse
begin
set@strtmp='
>(select max
'set
@strorder='
order by '+
@fldname+'
asc'
endif
@pageindex=1
begin
if@strwhere
!=''
set@strsql='
select top '+
str(
@pagesize) +
''+@strgetfields+'
from '+
@tblname+'
where '+
@strwhere+'
'+@strorder
else
set@strsql='
select top '+
str(
@pagesize) +
''+@strgetfields+'
from '+
@tblname+'
'+@strorder
--如果是第一頁就執行以上**,這樣會加快執行速度
endelse
begin
if@strwhere
!=''
set@strsql='
select top '+
str(
@pagesize) +
''+@strgetfields+'
from '+
@tblname+'
where '+
@fldname+''
+@strtmp+'
('+substring
(@fldname
, charindex('
.',@fldname)+
1, len(
@fldname
)) +
') from (select top '+
str((
@pageindex-1
)*@pagesize) +
''+@fldname+'
from '+
@tblname+'
where '+
@strwhere+'
'+@strorder+'
) as tbltmp) and '+
@strwhere+'
'+@strorder
else
set@strsql='
select top '+
str(
@pagesize) +
''+@strgetfields+'
from '+
@tblname+'
where '+
@fldname+''
+@strtmp+'
('+substring
(@fldname
, charindex('
.',@fldname)+
1, len(
@fldname
)) +
') from (select top '+
str((
@pageindex-1
)*@pagesize) +
''+@fldname+'
from '+
@tblname+''
+@strorder+'
) as tbltmp)'+
@strorder
endend
@strsql
exec
sp_executesql
@strsql
go
分頁儲存過程 分頁儲存過程
分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...
分頁儲存過程
create proc p sobigo percentpage tblname varchar 255 t category 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pag...
分頁儲存過程
create procedure pro select pageindex int,pagesize int as select student.sno,student.sname,student.s grade.math,grade.physics,grade.huaxue,grade.chine...