阅读:        作者:迪克猪

数据库分页存储过程(3)

/*
******************************************************************************************
  存储过程名称:Common_Pagination
  存储过程功能:通用分页存储过程
  操 作 说 明 :
        
  设 计 时 间 :2004年11月01日
  代码设计者  :小朱(zsy619@163.com)
******************************************************************************************
  功能描述:

******************************************************************************************
  如果您修改了我的程序,请留下修改记录,以便对程序进行维护,谢谢  !!!
==========================================================================================
  修改人   修改时间    修改原因
------------------------------------------------------------------------------------------

==========================================================================================
******************************************************************************************
  备注:

******************************************************************************************
*/

CREATE PROCEDURE [dbo].[Common_Pagination]
     
@SQL          varchar(8000),        --TSQL语句
     @PageCurr         int,            --第几页
     @PageSize     int,                --PageSize
     @ID         varchar(255),            --关键字
     @Sort         varchar(255),            --排序字段
     @desc         bit = 0,            --升序/降序
    @pageCount int output
AS
    
    
declare @Str varchar(8000)

    
if (@desc = 1)
        
set @Str = "SELECT TOP " + CAST(@PageSize as varchar(20)) 
             
+ " * FROM (" + @SQL + ") T WHERE T." + @ID + " NOT IN (SELECT TOP "
             
+ cast((@PageSize*(@PageCurr-1)) as varchar(20)) + " "
             
+ @ID + " FROM (" + @SQL + ") T2  ORDER BY " + @Sort + " DESC) ORDER BY "
             
+ @Sort
    
else
        
set @Str = "SELECT TOP " + CAST(@PageSize as varchar(20)) + " * FROM ("
             
+ @SQL + ") T WHERE T." + @ID + " NOT IN (SELECT TOP "
             
+ cast((@PageSize*(@PageCurr-1)) as varchar(20)) + " " + @ID + " FROM (" 
             
+ @SQL + ") T2  ORDER BY " + @Sort + " ASC) ORDER BY " + @Sort
    
    
if (@desc = 1)
        
set @str = @str + " DESC"
    
else
        
set @str = @str + " ASC"


    
exec(@Str)
    
select @Str="select "+@Sort+" from ("+@sql+") t"
    
exec(@str)
    
select @pageCount=@@rowcount
GO

Tags: 过程   数据库分页   数据库   数据   存储过程