• Tsql 存储过程的分页


    use pubs
    go
    if exists(select name from sysobjects where name = 'emp')
    drop table emp
    go
    --复制表
    select emp_id,fname,lname into emp from dbo.employee

    --select * from emp

    --例如,求第3页,每页10条
    --即第21到30条记录
     select top 10 * from emp
     where emp_id not in(select top 20 emp_id from emp order by emp_id)
     order by emp_id

    --分页存储过程
    if exists(select name from sysobjects where name = 'up_pager' and type ='p')
     drop procedure up_pager
    go
    create procedure up_pager
     @pageSize int,   --每页显示记录数
     @pageIndex int,   --当前页码
     @tableName varchar(30),  --表名
     @colName varchar(30)  --排序的字段名
    as
    begin
     declare @sqlStr varchar(300)
     if @pageIndex = 1
      set @sqlStr = ' select top '+cast(@pageSize as varchar(20))+' * from '+@tableName+
           ' order by '+@colName      
     else
      set @sqlStr = ' select top '+cast(@pageSize as varchar(20))+' * from '+@tableName+
           ' where '+@colName+' not in '+
           '(select top '+ cast((@pageIndex-1)*@pageSize as varchar(20)) +' '+@colName+' from '+@tableName+
           ' order by '+@colName+')'+
           ' order by '+@colName
     --print @sqlStr
     execute(@sqlStr)
    end
    go

    execute up_pager 10,1,'emp','emp_id'


    --例如求总记录数和总页数
    select count(*) as 'rowcount','pageCount' = case
    when count(*)% 10 = 0 then (count(*)/10)
    when count(*)% 10 > 0 then (count(*)/10+1)
    end
    from emp


    --求总记录数和总页数
    if exists(select name from sysobjects where name = 'up_pagercount' and type ='p')
     drop procedure up_pagercount
    go
    create procedure up_pagercount
     @pageSize int,   --每页显示记录数
     @tableName varchar(30) --表名
    as
    begin
     declare @sqlStr varchar(300)
     set @sqlStr = 'select count(*) as ''RowCount'', pageCount = ' + ' case ' +
          ' when count(*)%'+cast(@pageSize as varchar(20)) +'=0 then count(*)/'+cast(@pageSize as varchar(20))+
          ' when count(*)%'+cast(@pageSize as varchar(20)) +'>0 then (count(*)/'+cast(@pageSize as varchar(20))+'+1)'+
         ' end' + ' from '+ @tableName
     execute (@sqlStr)
    end
    go

    execute up_pagercount 10,'emp'


     

  • 相关阅读:
    hdu 1715
    hdu 1370
    hdu 2370
    hdu 1393
    hdu 1564
    hdu 1720
    hdu 1342
    SQL技巧(sp_procedure_params_rowset,SQL中设置数据值为null)
    Control ‘dg’ of type 'GridView' must be placed inside a form tag with runat=server
    GridView事件中获取rowIndex值
  • 原文地址:https://www.cnblogs.com/zhangchen/p/1816816.html
Copyright © 2020-2023  润新知