自己总结的分页存储过程,不足之处请大家指点出来,我也努力更正
create procedure pagefunction --利用SQL 2005中的Row_number()
(
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@OrderName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '''' -- 查询条件 (注意: 不要加 where)
)
as
--declare @timediff datetime
declare @strOrder varchar(400) -- 排序类型
declare @strTmp varchar(110) -- 临时变量
declare @strSql varchar(5000) -- 主语句
begin
set nocount on;
--select @timediff=getdate()
if @OrderType!=0
set @strOrder='order by '+@OrderName+' desc'
else
set @strOrder='order by '+@OrderName+' asc'
if @strWhere is null or @strWhere =''
set @strWhere=''
else
set @strWhere=' where '+@strWhere+''
set @strSql='select '+@strGetFields+' from (select '+@strGetFields+'
,Row_number() over('+@strOrder+') as Row_Id from '+@tblName+' '+@strWhere+'
) as TabPage where Row_Id>'+str(@PageSize*(@PageIndex-1))+' and Row_Id<
'+str((@PageSize*@PageIndex)+1)+''
exec(@strSql)
--select datediff(ms,@timediff,getdate()) --耗时
set nocount off;
end