路-在继续

MicroCode
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

sqlserver存储过程实现多表分页

Posted on 2010-10-16 12:58  路-在继续  阅读(459)  评论(0编辑  收藏  举报

if @PageIndex = 1 

 

begin 

   if @strWhere != ’’   

    set @strSQL = ’select top ’ + str(@PageSize) +’ ’+@strGetFields+ ’ from [’+ @tblName +’] where ’ + @strWhere + ’ ’ + @strOrder 

    else 

    set @strSQL = ’select top ’ + str(@PageSize) +’ ’+@strGetFields+ ’ from [’+ @tblName +’] ’+ @strOrder 

--如果是第一页就执行以上代码,这样会加快执行速度 

end 

else 

begin 

--以下代码赋予了@strSQL以真正执行的SQL代码 

set @strSQL = ’select top ’ + str(@PageSize) +’ ’+@strGetFields+ ’ 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) +’ ’+@strGetFields+ ’ from [’+ @tblName +’] where [’ + @fldName + ’]’ + @strTmp + ’([’+ @fldName + ’]) from (select top ’ + str((@PageIndex-1)*@PageSize) + ’ [’+ @fldName + ’] 
from [’+ @tblName +’] where ’ + @strWhere + ’ ’ + @strOrder + ’) as tblTmp) and ’ + @strWhere + ’ ’ + @strOrder 

end 

end   

exec ( @strSQL)
GO