CREATE PROCEDURE [dbo].[PageGeneral]
(
@pagesize int,
@pageindex int,
@docount bit,
@TableName varchar(50), --表名
@Fields varchar(5000) = '*', --字段名(全部字段为*)
@OrderField varchar(5000), --排序字段(必须!支持多字段)
@sqlWhere varchar(5000) = Null --条件语句(不用加where
)
as
Declare @sql nvarchar(4000);
if(@docount=1)
begin
--计算总记录数
if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'select count(*) from ' + @TableName
else
set @sql = 'select count(*) from ' + @TableName + ' where ' + @sqlWhere
Exec(@Sql)
end
else
begin
if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName
else
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere
set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' +Convert(varchar(50),(@pageindex-1)*@pagesize+1) + ' and ' + Convert(varchar(50),(@pageindex-1)*@pagesize+@pagesize)
Exec(@Sql)
end