zoukankan      html  css  js  c++  java
  • MSSQL通用分页存储过程

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    ALTER        PROCEDURE [dbo].[GetDataSet] 
    @TableList Varchar(200)='*',
    @TableName Varchar(300),
    @SelectWhere Varchar(1000)='',
    @SelectOrderId Varchar(200),
    @SelectOrder Varchar(200)='',
    @intPageNo int=1--页号
    @intPageSize int=10 --每页显示数
    as
    begin
        
    set nocount on--关闭计数
        declare @RecordCount int  --总记录数(存储过程输出参数)
        declare @TmpSelect      NVarchar(2000)  
        
    declare @Tmp     NVarchar(600)  

        
    if @SelectWhere=''
            
    begin
                
    set @TmpSelect = 'select @RecordCount = count(*) from '+@TableName
            
    end
        
    else
            
    begin
                
    set @TmpSelect = 'select @RecordCount = count(*) from '+@TableName +' where '+@SelectWhere
            
    end
        
    execute sp_executesql  @TmpSelect,    --执行上面的sql语句
        N'@RecordCount int OUTPUT' ,  --执行输出数据的sql语句,output出总记录数
        @RecordCount  OUTPUT
        
    --if (@RecordCount = 0)    --如果没有,则返回零
                   --return 0
        /*判断页数是否正确*/
          
    if (@intPageNo - 1* @intPageSize > @RecordCount   --页号大于总页数,返回错误
            return (-1)
        
    --set nocount off--打开计数

        
    if @SelectWhere != '' 
            
    begin
                
    set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' , '''+str(@RecordCount)+''' as Count from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' where 1=1 and '+@SelectWhere +' '+@SelectOrder+') and '+@SelectWhere +' '+@SelectOrder
            
    end
        
    else
            
    begin
                
    set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' , '''+str(@RecordCount)+''' as Count from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' '+@SelectOrder+''+@SelectOrder
            
    end
        
    execute sp_executesql @TmpSelect
        
    return(@@rowcount)
    end
  • 相关阅读:
    Monkey写脚本
    Appium+JAVA初试牛刀之安装APP
    新安家啦
    SRAM速度提升思路及方法
    FIR滤波器工作原理(算法)以及verilog算法实现(包含与IIR的一些对比)
    I2C总线协议详解
    有符号二进制加法溢出判断以及溢出后该如何计算正确答案
    Verilog 编写规范
    Android中锁屏密码算法解析以及破解方案
    IIS中查看W3P.exe进程对应的应用程序池的方法
  • 原文地址:https://www.cnblogs.com/qixuejia/p/1914823.html
Copyright © 2011-2022 走看看