• 数据库分页存储过程(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
  • 相关阅读:
    预备作业03 20162311张之睿
    [LeetCode 题解]: String to Interger (atoi)
    [LeetCode 题解]: Add Two Numbers
    [LeetCode 题解]: Interger to Roman
    [LeetCode 题解]: Longest Substring Without Repeating Characters
    [LeetCode 题解]: Roman to Interger
    [LeetCode 题解]: palindromes
    [LeetCode 题解]: Two Sum
    [LeetCode 题解]: Maximum Subarray
    [LeetCode 题解]:Gas Station
  • 原文地址:https://www.cnblogs.com/zsy/p/311234.html
Copyright © 2020-2023  润新知