zoukankan      html  css  js  c++  java
  • sql分页存储过程

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    CREATE   PROCEDURE [dbo].[page_proc]
      
    @selectstr varchar(2048),     --所取字段
      @tbname   varchar(50),        --所查询的表的名称
      @querystr  varchar(2048),     --查询条件
      @pkey  varchar(50),           --主键(排序段)
      @ordertype bit=1,             --排序规则 0:升序,1:降序
      @pagesize int,                --每页数量
      @page    int output,          --指定返回页
      @rscount int  output,         --返回总数
      @pagecount int output         --返回总页数
    as 
      
    declare @sqlstr  nvarchar(2048)
      
    declare @sqlcount nvarchar(2048)
      
    declare @l_order varchar(255)
      
    declare @l_compare varchar(255)
      
    declare @l_tquery varchar(2048)
      
    declare @l_query varchar(2048)

     
    /*指定数据返回开始*/
      
    if @ordertype=1    --降序
          begin
            
    set @l_order='desc'
            
    set @l_compare=@pkey+'<(SELECT MIN('+@pkey+')'
          
    end
       
    else             --升序
          begin
            
    set @l_order=''
            
    set @l_compare=@pkey+'>(SELECT MAX('+@pkey+')'
          
    end

      
    if @querystr is null or rtrim(@querystr)='' 
          
    begin
             
    set @l_tquery=''
             
    set @l_query=''
          
    end
      
    else
          
    begin
             
    set @l_tquery='where ('+@querystr+')'
             
    set @l_query='and ('+@querystr+')'
          
    end
      
    set nocount on

     
    /*计算返回数据总数和页数*/
      
    set @sqlcount='select @rscount=count('+@pkey+') from '+@tbname+' '+@l_tquery
      
    exec sp_executesql @sqlcount,N'@rscount int OUTPUT',@rscount output
      
    set @pagecount=ceiling(@rscount/cast(@pagesize as float))
      
    if @page>@pagecount
        
    set @page=@pagecount
      
    if @page<1
        
    set @page=1
     
    /*页数计算结束*/  

      
    if @page>1
        
    set @sqlstr='select top '+cast(@pagesize as varchar)+' '+@selectstr+' from '+@tbname+' where '+@l_compare+' from (select top '+cast(@pagesize*(@page-1as varchar)+' '+@Pkey+' from '+@tbname+' '+@l_tquery+' order by '+@Pkey+' '+@l_order+') as tb) '+@l_query+' order by '+@pkey+' '+@l_order
      
    else
        
    set @sqlstr='select top '+cast(@pagesize as varchar)+' '+@selectstr+' from '+@tbname+' '+@l_tquery+' order by '+@pkey+' '+@l_order
     
    exec(@sqlstr)
     
    set nocount off
  • 相关阅读:
    点击空白处回收键盘
    数据处理文件读取---预习 1.30
    界面通信之属性传值、代理传值
    UITableView的添加、删除、移动操作
    加载plist文件数据的方法
    UITableViewCell的重用机制
    自定义cell自适应高度
    关于Xcode7更新之后使用 SDWebImage 图片加载不出来
    简述frame、bounds、center
    layoutSubviews方法需要被调用的情况有哪些
  • 原文地址:https://www.cnblogs.com/cancer_xu/p/1606815.html
Copyright © 2011-2022 走看看