一:
create
procedure
[dbo]
.[basic_pagination2000]
@tblname
varchar
(255),
-- 表名
@fidlelist
varchar
(2000),
--要查詢字段
@fldname
varchar
(255),
-- 排序字段
@pagesize
int,
-- 頁尺寸
@pageindex
int,
-- 頁碼
@isrecount
bit,
-- 返回記錄總數, 非
0 值則返回
@ordertype
bit,
-- 設定排序型別, 非
0 值則降序
@strwhere
varchar
(1000)
-- 查詢條件(注意
: 不要加
where) as
declare
@strsql
varchar
(6000)
-- 主語句
declare
@strtmp
varchar
(100),
@tmpwhere
varchar
(200)
-- 臨時變數
declare
@strorder
varchar
(400)
-- 排序型別
if@ordertype
!= 0
begin
set@strtmp
='<(select min'
set@strorder
=' order by ['
+@fldname
+'] desc'
end
else
begin
set@strtmp
='>(select max'
set@strorder
=' order by ['
+@fldname
+'] asc'
end
set@tmpwhere=''
;if(@strwhere
!='')
begin
set@tmpwhere
=' where '
;end if
@pageindex
= 1
begin
set@strsql
='select top '
+str
(@pagesize)+
' '+
@fidlelist
+' '
+'from ['
+@tblname
+'] '
+@tmpwhere
+' '
+@strorder
end
else
begin
set@strsql
='select top '
+str
(@pagesize)+
' '+
@fidlelist
+' '
+'from ['
+@tblname
+'] where ['+
@fldname
+']'
+@strtmp
+'(['
+@fldname
+']) from
(select top '
+str
((@pageindex
-1)*
@pagesize)+
' ['
+@fldname
+'] from ['+
@tblname
+'] '
+@tmpwhere
+' '
+@strorder
+') as tbltmp) '+
@tmpwhere
+' '
+@strorder
end
exec
(@strsql)
if@isrecount
!= 0
begin
set@strsql
='select count(*)
as total from ['
+@tblname
+']'
+@strwhere
exec
(@strsql)
end 二:
alter
procedure
[dbo]
.[basic_pagination2005]
@tblname
nvarchar
(200),
--表名
@fidlelist
nvarchar
(1000),
--要查詢字段
@fldname
nvarchar
(100),
--排序字段
@pagesize
int,
--頁尺寸
@pageindex
int,
--頁碼
@isrecount
bit,
-- 返回記錄總數, 非
0 值則返回
@ordertype
bit,
-- 設定排序型別, 非
0 值則降序
@strwhere
nvarchar
(1000)
--查詢條件 as
declare
@sqlstr
nvarchar
(4000),
@tmpwhere
nvarchar
(4000),
@tmporder
nvarchar
(100)
begin if
@ordertype
!= 0
begin
set@tmporder
=@fldname
+' desc '
end
else
begin
set@tmporder
=@fldname
+' asc '
end
set@tmpwhere=''
;if(@strwhere
!='')
begin
set@tmpwhere
=' where '
+@strwhere
;end
set@sqlstr
=n'select * from
(select '
+@fidlelist
+', row_number() over(order
by '
+@tmporder
+') as row from '
+@tblname
+@tmpwhere
+')
tmp where row between '
+cast
(((@pageindex
-1)*
@pagesize
+1)as
nvarchar
)+' and '
+cast (
@pageindex
*@pagesize
asnvarchar
);exec
sp_executesql
@sqlstr
if@isrecount
!= 0
begin
set@sqlstr
=n'select count(*) as total from '
+@tblname
+@tmpwhere
exec
sp_executesql
@sqlstr
end
end
儲存過程實現分頁
一 create procedure dbo basic pagination2000 tblname varchar 255 表名 fidlelist varchar 2000 要查詢字段 fldname varchar 255 排序字段 pagesize int,頁尺寸 pageindex in...
分頁儲存過程 分頁儲存過程
分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...
通過儲存過程實現分頁
create procedure dbo commonpageselect sqlwhere varchar 1000 查詢條件 pagenum int 20,每頁的記錄數 beginline int 1,第幾頁,預設第一頁 sqltable varchar 5000 要查詢的表或檢視,也可以一句s...