自己总结的分页存储过程,不足之处请大家指点出来,我也努力更正

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

  

posted @ 2011-08-05 09:09  Jason.裕哥  阅读(253)  评论(0编辑  收藏  举报