sql 分页存储过程

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)

 

 

posted @ 2012-07-03 11:09  世全  阅读(154)  评论(0)    收藏  举报