微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer2005分页存储过程

Create PROCEDURE PagerExecute
(
  @TblName varchar(255), -- 表名及表集合 
  @Fields varchar(1000)    ='*',0);">-- 列名及字段集合
  @Orders varchar(2000)    = '',0);">-- 排序条件
  @Wheres varchar(2000)    = '',0);">-- 查询条件 (不要加 where)
  @PageSize int             = 2,        - - 页长
  @PageIndex int            = 0,        -- 当前页,@PageIndex从0开始计算,表示第一页
  @doCount int              = 0 -- 返回记录总数,0分页,1返回总记录数
)

AS

declare @strsql varchar(max);
declare @MyTable varchar(max);
declare @PageNum varchar(10);
declare @size varchar(10);

Set @MyTable = '';
Set @PageNum = cast((@PageSize*@PageIndex) as varchar(50));
Set @size = cast(@PageSize as varchar(50));

If @Wheres !=''
 Begin 
    set @Wheres = ' where '+@Wheres 
 End


--如果 @doCount 大于0,则计算总记录数 
IF @doCount > 0
    begin
       set @strsql = 'select count(*) as Total from ' + @TblName + ' ' + @Wheres
    end 

-- 如果@doCount 等于0,则进行分页
ELSE
   begin
Set @MyTable = '(SELECT ROW_NUMBER() OVER('+@Orders+') AS RowId,'
+ @Fields + ' '
+ ' FROM ' + @TblName + ' ' 
 + @Wheres + ')AS Tbl '
set @strsql= 'SELECT TOP '+@size+' * FROM  ' +@MyTable+ ' WHERE RowId > '+ @PageNum
   end

-- 执行存储过程
Exec( @strsql )


-------- The End --//--

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐