--
獲取指定頁的資料
create
procedure
pagination
@tblname
varchar
(255
), --
表名 @strgetfields
varchar
(1000) =
'*',
--需要返回的列
@fldname
varchar
(255)=
'',
--排序的欄位名
@pagesize
int=
10,
--頁尺寸
@pageindex
int=1,
--頁碼
@docount
bit=0,
--返回記錄總數, 非 0 值則返回
@ordertype
bit=0,
--設定排序型別, 非 0 值則降序
@strwhere
varchar
(1500) =
''--
查詢條件 (注意: 不要加 where)
asdeclare
@strsql
varchar
(5000
) --
主語句
declare
@strtmp
varchar
(110
) --
臨時變數
declare
@strorder
varchar
(400
) --
排序型別
if@docount!=0
begin
if@strwhere
!=''
set@strsql="
select
count(*
) as
total
from
[" + @tblname + "
]where"+
@strwhere
else
set@strsql="
select
count(*
) as
total
from
[" + @tblname + "]"
end--
以上**的意思是如果@docount傳遞過來的不是0,就執行總數統計。以下的所有**都是@docount為0的情況
else
begin
if@ordertype!=0
begin
set@strtmp="
<
(select
min"
set@strorder="
orderby[
" + @fldname +"
]desc
" --
如果@ordertype不是0,就執行降序,這句很重要!
endelse
begin
set@strtmp="
>
(select
max"
set@strorder="
orderby[
" + @fldname +"
]asc
" end
if@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
--以下**賦予了@strsql以真正執行的sql**
set@strsql="
select
top"
+str
(@pagesize) +
" "+
@strgetfields+"
from["
+ @tblname + "
]where
[" + @fldname + "]"
+@strtmp+"(
["+ @fldname + "])
from
(select
top"
+str
((@pageindex-1
)*@pagesize) +
" ["+ @fldname + "
]from
[" + @tblname + "]"
+@strorder
+")
astbltmp)"
+@strorder
if@strwhere
!=''
set@strsql="
select
top"
+str
(@pagesize) +
" "+
@strgetfields+"
from["
+ @tblname + "
]where
[" + @fldname + "]"
+@strtmp+"(
[" + @fldname + "])
from
(select
top"
+str
((@pageindex-1
)*@pagesize) +
" [" + @fldname + "
]from
[" + @tblname + "
]where" +
@strwhere
+" "
+@strorder
+")
astbltmp)
and"
+@strwhere
+" "
+@strorder
endend
exec
(@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...