zoukankan      html  css  js  c++  java
  • SqlServer中使用row_number() over实现通用的分页存储过程

    --通用的分页存储过程

    create procedure sp_pager

    (

    @Sql nvarchar(4000), --要分页的sql语句

    @CurrentPageNo int,  --当前页面索引

    @PageSize int,           --每一页要显示的页数

    @TotalNum int output --数据的总条数 (输出参数)

    )

    as  

      declare @sqlcmd varchar(8000)  

      --查询数据  

      set @sqlcmd = 'select * from (' + @Sql + ') a  where RowIndex between ' +  convert(nvarchar,(@CurrentPageNo-1) * @PageSize + 1) + ' and ' + convert(varchar,@CurrentPageNo * @PageSize)  

      exec(@sqlcmd)  

      print (@sqlCmd)

      --求记录总数

          create table tempTable(num int)  

      insert into tempTable  exec('select count(*) from (' + @Sql + ') a')  

      select @TotalNum=(select * from tempTable)  

      drop table tempTable

    go

    --=========================================测试存储过程

    declare @Sql varchar(5000)

    declare @CurrentPageNo int

    declare @PageSize int

    declare @TotalNum int

    set @CurrentPageNo = 2

    set @PageSize = 4

    set @Sql=' select products.PID,products.PName,products.MarketPrice,productDispose.ShopPrice,row_number() over (order by products.PID) as RowIndex from ProductsDisposeInfo productDispose inner join ProductsInfo products on productDispose.PID=products.PID'

    exec sp_pager @Sql,@CurrentPageNo,@PageSize,@TotalNum output

    print @TotalNum

  • 相关阅读:
    为什么页面设计宽度要控制在960px
    RRDtool运用
    cacti监控jvm
    cacti安装
    rConfig v3.9.2 授权认证与未授权RCE (CVE-2019-16663) 、(CVE-2019-16662)
    Linux安全学习
    Github-Dorks与辅助工具
    警方破获超大DDoS黑产案,20万个僵尸网络运营商被抓
    SRC漏洞挖掘
    威胁情报木马病毒样本搜集
  • 原文地址:https://www.cnblogs.com/daisy-thq/p/3446537.html
Copyright © 2011-2022 走看看