分页存储过程(两个)set ANSI_NULLS ON
分页存储过程(两个)
set QUOTED_IDENTIFIER ON
分页存储过程(两个)
go
分页存储过程(两个)
分页存储过程(两个)
ALTER Procedure [dbo].[Proc_splitPage]
分页存储过程(两个)
@TableName varchar(50),        --表名
分页存储过程(两个)
@Fields varchar(5000= '*',    --字段名(全部字段为*)
分页存储过程(两个)
@OrderField varchar(5000),        --排序字段(必须!支持多字段)
分页存储过程(两个)
@sqlWhere varchar(5000= Null,--条件语句(不用加where)
分页存储过程(两个)
@pageSize int,                    --每页多少条记录
分页存储过程(两个)
@pageIndex int = 1 ,            --指定当前为第几页
分页存储过程(两个)
@TotalPage int output            --返回总页数 
分页存储过程(两个)
as
分页存储过程(两个)
begin
分页存储过程(两个)
分页存储过程(两个)    
Begin Tran --开始事务
分页存储过程(两个)

分页存储过程(两个)    
Declare @sql nvarchar(4000);
分页存储过程(两个)    
Declare @totalRecord int;    
分页存储过程(两个)
分页存储过程(两个)    
--计算总记录数
分页存储过程(两个)
         
分页存储过程(两个)    
if (@SqlWhere='' or @sqlWhere=NULL)
分页存储过程(两个)        
set @sql = 'select @totalRecord = count(*) from ' + @TableName
分页存储过程(两个)    
else
分页存储过程(两个)        
set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere
分页存储过程(两个)
分页存储过程(两个)    
EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数        
分页存储过程(两个)
    
分页存储过程(两个)    
--计算总页数
分页存储过程(两个)
    select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)
分页存储过程(两个)
分页存储过程(两个)    
if (@SqlWhere='' or @sqlWhere=NULL)
分页存储过程(两个)        
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName 
分页存储过程(两个)    
else
分页存储过程(两个)        
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere    
分页存储过程(两个)        
分页存储过程(两个)    
分页存储过程(两个)    
--处理页数超出范围情况
分页存储过程(两个)
    if @PageIndex<=0 
分页存储过程(两个)        
Set @pageIndex = 1
分页存储过程(两个)    
分页存储过程(两个)    
if @pageIndex>@TotalPage
分页存储过程(两个)        
Set @pageIndex = @TotalPage
分页存储过程(两个)
分页存储过程(两个)     
--处理开始点和结束点
分页存储过程(两个)
    Declare @StartRecord int
分页存储过程(两个)    
Declare @EndRecord int
分页存储过程(两个)    
分页存储过程(两个)    
set @StartRecord = (@pageIndex-1)*@PageSize + 1
分页存储过程(两个)    
set @EndRecord = @StartRecord + @pageSize - 1
分页存储过程(两个)
分页存储过程(两个)    
--继续合成sql语句
分页存储过程(两个)
    set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' + Convert(varchar(50),@StartRecord+ ' and ' +  Convert(varchar(50),@EndRecord)
分页存储过程(两个)
分页存储过程(两个)    
Exec(@Sql)
分页存储过程(两个)    
---------------------------------------------------
分页存储过程(两个)
    If @@Error <> 0
分页存储过程(两个)      
Begin
分页存储过程(两个)        
RollBack Tran
分页存储过程(两个)        
Return -1
分页存储过程(两个)      
End
分页存储过程(两个)     
Else
分页存储过程(两个)      
Begin
分页存储过程(两个)        
Commit Tran
分页存储过程(两个)        
Return @totalRecord ---返回记录总数
分页存储过程(两个)
      End    
分页存储过程(两个)
end
分页存储过程(两个)
分页存储过程(两个)
分页存储过程(两个)
-------------------------------------------------------------------------------------------
分页存储过程(两个)

分页存储过程(两个)
set ANSI_NULLS ON
分页存储过程(两个)
set QUOTED_IDENTIFIER ON
分页存储过程(两个)
go
分页存储过程(两个)
分页存储过程(两个)
ALTER PROCEDURE [dbo].[GetRecordByPage]
分页存储过程(两个)     
@tblName       varchar(255),       -- 表名
分页存储过程(两个)
     @fldName       varchar(255),       -- 主键字段名
分页存储过程(两个)
     @selectContent 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)         -- 临时变量
分页存储过程(两个)
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 @strSQL = 'select top ' + str(@PageSize+' ' + @selectContent +'  from ['
分页存储过程(两个)     
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
分页存储过程(两个)     
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize+ ' ['
分页存储过程(两个)     
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
分页存储过程(两个)     
+ @strOrder
分页存储过程(两个)
分页存储过程(两个)
if @strWhere != ''
分页存储过程(两个)     
set @strSQL = 'select top ' + str(@PageSize+ ' * from ['
分页存储过程(两个)         
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
分页存储过程(两个)         
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize+ ' ['
分页存储过程(两个)         
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
分页存储过程(两个)         
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
分页存储过程(两个)
分页存储过程(两个)
if @PageIndex = 1
分页存储过程(两个)
begin
分页存储过程(两个)     
set @strTmp =''
分页存储过程(两个)     
if @strWhere != ''
分页存储过程(两个)         
set @strTmp = ' where ' + @strWhere
分页存储过程(两个)
分页存储过程(两个)     
set @strSQL = 'select top ' + str(@PageSize+ ' * from ['
分页存储过程(两个)         
+ @tblName + ']' + @strTmp + ' ' + @strOrder
分页存储过程(两个)
end
分页存储过程(两个)
分页存储过程(两个)
if @IsReCount != 0
分页存储过程(两个)     
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere
分页存储过程(两个)
分页存储过程(两个)
exec (@strSQL)

相关文章: