【转】mysql通用分页存储过程

dropprocedureifexists prc_page_result;
createprocedure prc_page_result (
in currpage      int,
in columns       varchar(500),
in tablename     varchar(500),
in sCondition    varchar(500),
in order_field   varchar(100),
in asc_field     int,
in primary_field varchar(100),
in pagesize      int
)
begin
    
declare sTemp  varchar(1000);
    
declare sSql   varchar(4000);
    
declare sOrder varchar(1000);
    
    
if asc_field =1then
        
set sOrder = concat(' order by ', order_field, ' desc ');
        
set sTemp  ='<(select min';
    
else
        
set sOrder = concat(' order by ', order_field, ' asc ');
        
set sTemp  ='>(select max';
    
endif;
    
    
if currpage =1then
        
if sCondition <>''then
            
set sSql = concat('select ', columns, ' from ', tablename, ' where ');
            
set sSql = concat(sSql, sCondition, sOrder, ' limit ?');
        
else
            
set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?');
        
endif;
    
else
        
if sCondition <>''then
            
set sSql = concat('select ', columns, ' from ', tablename);
            
set sSql = concat(sSql, ' where ', sCondition, ' and ', primary_field, sTemp);
            
set sSql = concat(sSql, '(', primary_field, ')', ' from (select ');
            
set sSql = concat(sSql, '', primary_field, ' from ', tablename, sOrder);
            
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
            
set sSql = concat(sSql, ' limit ?');
        
else
            
set sSql = concat('select ', columns, ' from ', tablename);
            
set sSql = concat(sSql, ' where ', primary_field, sTemp);
            
set sSql = concat(sSql, '(', primary_field, ')', ' from (select ');
            
set sSql = concat(sSql, '', primary_field, ' from ', tablename, sOrder);
            
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
            
set sSql = concat(sSql, ' limit ?');
        
endif;
    
endif;
    
set@iPageSize= pagesize;
    
set@sQuery= sSql;
    
prepare stmt from@sQuery;
    
execute stmt using @iPageSize;
end;

 

//调用

 

call prc_page_result(1, "字段列表", "表名", "条件", "排序字段", 1, "id", 25);
参数说明:

 

第几页,显示的字段(如name,id),表名,Where后面的条件,排序的字段,1表示降序,id主键,25每页显示条数

 

 

转载于:https://www.cnblogs.com/wuqingqiang/archive/2012/05/08/2490265.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值