CREATE proc [dbo].[GetPageInfo]
@PageIndex int,
@PageSize int,
@TableName varchar(200),
@FieldName varchar(200),
@Sort varchar(10),
@sqlCondition varchar(500)
as
declare @sqlstr nvarchar(4000)
set @sqlstr='SELECT TOP '+ Convert(varchar,@PageSize)+ ' * FROM '+@TableName+' WHERE 1=1 ';
if (@sqlCondition <>'')
begin
set @sqlstr= @sqlstr+' and '+@sqlCondition;
end
set @sqlstr= @sqlstr+' and '+@FieldName ;
if (@Sort='asc')
begin
set @sqlstr= @sqlstr+' >=(select MAX(' ;
end
else
begin
set @sqlstr= @sqlstr+' <=(select MIN(' ;
end
set @sqlstr= @sqlstr+@FieldName+') FROM (SELECT TOP '+Convert(varchar,@PageSize*(@PageIndex-1)+1)+' '+@FieldName;
set @sqlstr= @sqlstr+' From '+@TableName+' where 1=1 ';
if (@sqlCondition <> '')
begin
set @sqlstr= @sqlstr+' and '+@sqlCondition;
end
set @sqlstr= @sqlstr+' ORDER BY '+ @FieldName+' '+@Sort+' ) as T) ';
set @sqlstr= @sqlstr+ ' ORDER BY '+@FieldName+' '+@Sort;
--print @sqlstr
exec(@sqlstr)