分页-【存储过程通用的】 【SqlServer分页】

create procedure kk_fenye  
    ---获得某一页的数据---  
    @currPage int = 1,   --->当前页页码(即top currPage)  
    @showColumn varchar(2000) = '*', --->需要查询的字段(即column1,column2,......)  
    @tabName varchar(2000),   --->需要查看的表名(即from table_name)  
    @strCondition varchar(2000) = '', --->查询条件(即where condition......) 不用加where关键字  
    @ascColumn varchar(100) = '',  --->排序的字段名(即order by column asc/desc)  
    @bitOrderType int = 0,   --->排序的类型(0为升序,1为降序)  
    @pkColumn varchar(50) = '',  --->主键名称  
    @pageSize int = 20   --->分页大小  
    as  
    begin  --->存储过程开始  
    ---该存储过程需要用到的几个变量---  
    declare @strTemp varchar(1000)  
    declare @strSql varchar(4000)  --->该存储过程最后执行的语句  
    declare @strOrderType varchar(1000) --->排序类型语句(order by column asc/desc)  
    begin  
    if @bitOrderType = 1  --->@bitOrderType = 1 即执行降序  
    begin  
        set @strOrderType = ' order by ' + @ascColumn + ' desc'  
        set @strTemp = '<(select min'  
    end  
    else  
    begin  
        set @strOrderType = ' order by ' + @ascColumn + ' asc'  
        set @strTemp = '>(select max'  
    end  
    if @currPage = 1 --->如果是第一页  
    begin  
        if @strCondition != ''  
    set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + @strOrderType  
        else  
    set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + @strOrderType  
    end  
    else  --->其他页  
    begin  
        if @strCondition != ''  
    set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + ' and ' +  
    @pkColumn + @strTemp + '(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn +  
    ' from ' + @tabName + @strOrderType + ') as TabTemp)' + @strOrderType  
        else  
    set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @pkColumn + @strTemp +  
    '(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn + ' from ' +  
    @tabName + @strOrderType + ') as TabTemp)' + @strOrderType  
    end  
    end  
    EXEC (@strSql)  
    end --->存储过程结束  
    go   
    
    

    exec kk_fenye 2,'*','menus','','menuId',0,'menuId',10




exec kk_fenye 1,'*','menus',' menuText like ''%学'' '  ,'menuId',0,'menuId',10




====================【java 调用存储过程】================================



  1.  int pageNum = 1;  
  2.  int startdate = 20111011;  
  3.  int enddate = 20111013;  
  4.   
  5. sql="exec kk_fenye '"+pageNum+"','*','accout1','transactionDate >= "+
  6.       startdate+"+and transactionDate <= "+enddate+"','transactionDate',1,'id',25";  
  7. st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,  
  8.                     ResultSet.CONCUR_UPDATABLE);  
  9. rs=st.executeQuery("SET NOCOUNT ON;"+sql);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值