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