• 数据库分页存储过程(5)


    /*
    ******************************************************************************************
      过程名称:Common_Percent_Pagination
      过程功能:
      代码设计:小朱(zsy619@163.com)
      设计时间:2005-11-3 13:58:26
    ******************************************************************************************
      功能描述:

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

    ==========================================================================================

    ******************************************************************************************
      备注:
    *****************************************************************************************
    */

    Create Procedure [dbo].[Common_Percent_Pagination]
        
    @TBName NVARCHAR(255) ,
        
    @SQL nVARCHAR(4000),    --不带排序语句的SQL语句
        @Page int,              --页码
        @RecsPerPage int,       --每页容纳的记录数
        @ID VARCHAR(255),       --需要排序的不重复的ID号
        @Sort VARCHAR(255) ,     --排序字段及规则
        @PageCount INT OUTPUT          --总页数
    AS
        
    Declare @intResult Int
        
    Begin Tran
        
    -----------------------------------------------------------------代码设计--------------------------------------------------------------------
        DECLARE @sql1 nvarchar(4000)
        
    SET @sql1=N'SELECT @PageCount=COUNT(*)'
            
    +N' FROM '+@tbname  
        
    EXEC sp_executesql @sql1,N'@PageCount int OUTPUT',@PageCount OUTPUT
        
    SET @PageCount=(@PageCount+@RecsPerPage-1)/@RecsPerPage
        
    DECLARE @Str nVARCHAR(4000
        
    SET @Str='SELECT   TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN (SELECT   TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@Sort 
        
    --PRINT @Str 
        --EXEC sp_ExecuteSql @Str
        --EXEC @Str
        DECLARE @Str1 NVARCHAR(400)
        
    DECLARE @Str2 NVARCHAR(400)
        
    SET @Str1 = CAST(@RecsPerPage AS VARCHAR(20))
        
    SET @Str2 = CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))
        
    EXEC ( N'SELECT   TOP '+@Str1+ N' * FROM ('+@SQL+N') T WHERE T.'+@ID+N' NOT IN (SELECT   TOP '+@Str2+N' '+@ID+N' FROM ('+@SQL+N') T9 ORDER BY '+@Sort+N') ORDER BY '+@Sort )
        
    Set @intResult = @@ROWCOUNT
        
    ----------------------------------------------------------------------------------------------------------------------------------------------------
        If @@Error <> 0
        
    Begin
            
    RollBack Tran
            
    Return -1
        
    End
        
    Else
        
    Begin
            
    Commit Tran
            
    Return @intResult
        
    End
    GO
  • 相关阅读:
    #include <functional>
    3.3内联函数
    如何查看内存占用和运行速度
    属性和方法的动态绑定和限制
    __slots__节约空间
    函数进阶之一等对象
    python继承之super
    python的方法VSjava方法
    python面向对象基础(三)内置方法 __xx__
    python面向对象基础(二)反射
  • 原文地址:https://www.cnblogs.com/zsy/p/311238.html
Copyright © 2020-2023  润新知