存储过程 分页处理
CREATE PROCEDURE dbo.proc_ListPageInt
存储过程 分页处理(
存储过程 分页处理
@tblName     nvarchar(200),        ----要显示的表或多个表的连接
存储过程 分页处理
@fldName     nvarchar(500= '*',    ----要显示的字段列表
存储过程 分页处理
@pageSize    int = 10,        ----每页显示的记录个数
存储过程 分页处理
@page        int = 1,        ----要显示那一页的记录
存储过程 分页处理
@pageCount    int = 1 output,            ----查询结果分页后的总页数
存储过程 分页处理
@Counts    int = 1 output,                ----查询到的记录数
存储过程 分页处理
@fldSort    nvarchar(200= null,    ----排序字段列表或条件
存储过程 分页处理
@Sort        bit = 0,        ----排序方法,0为升序,1为降序(如果是多字段排列Sort指代最后一个排序字段的排列顺序(最后一个排序字段不加排序标记)--程序传参如:' SortA Asc,SortB Desc,SortC ')
存储过程 分页处理
@strCondition    nvarchar(1000= null,    ----查询条件,不需where
存储过程 分页处理
@ID        nvarchar(150),        ----主表的主键
存储过程 分页处理
@Dist                 bit = 0           ----是否添加查询字段的 DISTINCT 默认0不添加/1添加
存储过程 分页处理
)
存储过程 分页处理
AS
存储过程 分页处理
SET NOCOUNT ON
存储过程 分页处理
Declare @sqlTmp nvarchar(1000)        ----存放动态生成的SQL语句
存储过程 分页处理
Declare @strTmp nvarchar(1000)        ----存放取得查询结果总数的查询语句
存储过程 分页处理
Declare @strID     nvarchar(1000)        ----存放取得查询开头或结尾ID的查询语句
存储过程 分页处理

存储过程 分页处理
Declare @strSortType nvarchar(10)    ----数据排序规则A
存储过程 分页处理
Declare @strFSortType nvarchar(10)    ----数据排序规则B
存储过程 分页处理

存储过程 分页处理
Declare @SqlSelect nvarchar(50)         ----对含有DISTINCT的查询进行SQL构造
存储过程 分页处理
Declare @SqlCounts nvarchar(50)          ----对含有DISTINCT的总数查询进行SQL构造
存储过程 分页处理

存储过程 分页处理
存储过程 分页处理
if @Dist  = 0
存储过程 分页处理
begin
存储过程 分页处理    
set @SqlSelect = 'select '
存储过程 分页处理    
set @SqlCounts = 'Count(*)'
存储过程 分页处理
end
存储过程 分页处理
else
存储过程 分页处理
begin
存储过程 分页处理    
set @SqlSelect = 'select distinct '
存储过程 分页处理    
set @SqlCounts = 'Count(DISTINCT '+@ID+')'
存储过程 分页处理
end
存储过程 分页处理
存储过程 分页处理
存储过程 分页处理
if @Sort=0
存储过程 分页处理
begin
存储过程 分页处理    
set @strFSortType=' ASC '
存储过程 分页处理    
set @strSortType=' DESC '
存储过程 分页处理
end
存储过程 分页处理
else
存储过程 分页处理
begin
存储过程 分页处理    
set @strFSortType=' DESC '
存储过程 分页处理    
set @strSortType=' ASC '
存储过程 分页处理
end
存储过程 分页处理
存储过程 分页处理
存储过程 分页处理
存储过程 分页处理
--------生成查询语句--------
存储过程 分页处理--
此处@strTmp为取得查询结果数量的语句
存储过程 分页处理
if @strCondition is null or @strCondition=''     --没有设置显示条件
存储过程 分页处理
begin
存储过程 分页处理    
set @sqlTmp =  @fldName + ' From ' + @tblName
存储过程 分页处理    
set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName
存储过程 分页处理    
set @strID = ' From ' + @tblName
存储过程 分页处理
end
存储过程 分页处理
else
存储过程 分页处理
begin
存储过程 分页处理    
set @sqlTmp = + @fldName + 'From ' + @tblName + ' where (1>0) ' + @strCondition
存储过程 分页处理    
set @strTmp = @SqlSelect+' @Counts='+@SqlCounts+' FROM '+@tblName + ' where (1>0) ' + @strCondition
存储过程 分页处理    
set @strID = ' From ' + @tblName + ' where (1>0) ' + @strCondition
存储过程 分页处理
end
存储过程 分页处理
存储过程 分页处理
----取得查询结果总数量-----
存储过程 分页处理
exec sp_executesql @strTmp,N'@Counts int out ',@Counts out
存储过程 分页处理
declare @tmpCounts int
存储过程 分页处理
if @Counts = 0
存储过程 分页处理    
set @tmpCounts = 1
存储过程 分页处理
else
存储过程 分页处理    
set @tmpCounts = @Counts
存储过程 分页处理
存储过程 分页处理    
--取得分页总数
存储过程 分页处理
    set @pageCount=(@tmpCounts+@pageSize-1)/@pageSize
存储过程 分页处理
GO



相关文章: