通用存储过程,分页

CREATE PROC sp_PageCount
@tbname sysname, --要分页显示的表名
@Where nvarchar(1000)='', --查询条件
@Count int OUTPUT --总页数
as
DECLARE @sql nvarchar(4000)
SET @sql=N'SELECT @Count=COUNT(*)'
+N' FROM '+@tbname
+N' where '+@Where
EXEC sp_executesql @sql,N'@Count int OUTPUT',@Count OUTPUT
GO

CREATE PROC sp_PageView
@tbname sysname, --要分页显示的表名
@PageCurrent int=1, --要显示的页码
@PageSize int=10, --每页的大小(记录数)
@FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
@FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序
@Where nvarchar(1000)='', --查询条件
@Id nvarchar(20)=''
AS
declare @topN int
set @topN= (@PageCurrent-1)*@PageSize
exec (N'select top '+@PageSize+N''+@FieldShow+N' from '+@tbname+N' where '+@Id+N' not in(select top '+@topN+N' '+@Id+N' from

'+@tbname+N' where '+ @Where+N' '+@FieldOrder+ N')'+N' and '+ @Where+N' '+@FieldOrder)
GO
posted @ 2011-03-20 19:35  ThirteenYi  阅读(257)  评论(0编辑  收藏  举报