• 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
  • 相关阅读:
    vue实现 toggle显示隐藏效果
    html+css奇淫技巧 3 教你如何伪类控制字体间距左右排版
    js 数组,字符串,json互相转换
    forEach 与for in
    js/jq 选项卡开发js代码
    html奇淫技巧 2 教你如何进行图文环绕布局 原创
    2019-05-07 开始记笔记vue
    vue src 拼接
    js 反选 全选看出你处于哪个阶段!
    JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(转载)
  • 原文地址:https://www.cnblogs.com/qixuejia/p/1914823.html
Copyright © 2020-2023  润新知