每次都去复制这些相同的代码,处理分页操作,一直懒的去写一个通用的存储过程去处理,正好一个项目刚结束,把代码整理了一下,写了一个通用的存储过程,以便提高以后的开发效率
--Author:Jrian
--Date: 2012年8月29日
create proc [dbo].[Proc_Pager]
@pageIndex int=1, --当前页
@pageSize int=10, --一页显示条数
@columnName nvarchar(500)='*', --列名
@tableName nvarchar(500)='', --表名
@orderColumn nvarchar(500)='OID', --排序列,
@where varchar(1500)='', --条件
@rowcount int output --总记录条数
as
begin
declare @beginRow int,--起始行
@endRow int, --结束行
@sql nvarchar(3000) ,
@sqlfrom nvarchar(100),
@sqlWhere nvarchar(2000),
@sqlCount nvarchar(1000)
set @beginRow =(@pageIndex-1)*@pageSize+1
set @endRow = @pageIndex*@pageSize
set @sql =N' select row_number() over(order by '+@orderColumn+' desc) as rowId, '+@columnName
set @sqlfrom =' from '+@tableName+''
--是否在条件
if len(@where)>0
set @sqlWhere=' where '+@where
else
set @sqlWhere=' '
--总记录条数
set @sqlCount='select @count=count(0) '+@sqlfrom+' '+@sqlWhere
exec sp_executesql @sqlCount, N'@count bigint output',@count=@rowcount output
set @sql =@sql+@sqlfrom+@sqlWhere
set @sql='select * from ( '+@sql+') as t where rowId between '+convert(varchar,@beginRow) +' and '+convert(varchar,@endRow)
exec (@sql)
end
go
--declare @rowcount int
--exec [Proc_Pager] 1,10,'so.*,sob.lparentID','ShipOrder so INNER JOIN ShipOrderBody sob on so.OID=sob.lParentID','so.OID,sob.lparentID','vCustomerCode like ''%500%''',@rowcount output
--Date: 2012年8月29日
create proc [dbo].[Proc_Pager]
@pageIndex int=1, --当前页
@pageSize int=10, --一页显示条数
@columnName nvarchar(500)='*', --列名
@tableName nvarchar(500)='', --表名
@orderColumn nvarchar(500)='OID', --排序列,
@where varchar(1500)='', --条件
@rowcount int output --总记录条数
as
begin
declare @beginRow int,--起始行
@endRow int, --结束行
@sql nvarchar(3000) ,
@sqlfrom nvarchar(100),
@sqlWhere nvarchar(2000),
@sqlCount nvarchar(1000)
set @beginRow =(@pageIndex-1)*@pageSize+1
set @endRow = @pageIndex*@pageSize
set @sql =N' select row_number() over(order by '+@orderColumn+' desc) as rowId, '+@columnName
set @sqlfrom =' from '+@tableName+''
--是否在条件
if len(@where)>0
set @sqlWhere=' where '+@where
else
set @sqlWhere=' '
--总记录条数
set @sqlCount='select @count=count(0) '+@sqlfrom+' '+@sqlWhere
exec sp_executesql @sqlCount, N'@count bigint output',@count=@rowcount output
set @sql =@sql+@sqlfrom+@sqlWhere
set @sql='select * from ( '+@sql+') as t where rowId between '+convert(varchar,@beginRow) +' and '+convert(varchar,@endRow)
exec (@sql)
end
go
--declare @rowcount int
--exec [Proc_Pager] 1,10,'so.*,sob.lparentID','ShipOrder so INNER JOIN ShipOrderBody sob on so.OID=sob.lParentID','so.OID,sob.lparentID','vCustomerCode like ''%500%''',@rowcount output
--print @rowcount