mysql分页存储过程

CREATE PROCEDURE `prc_page_result`(in currpage int,
in columns       varchar(4000),
in tablename     varchar(4000),
in sCondition    varchar(21845),
in order_field   varchar(100),
in asc_field     int,
in primary_field varchar(100),
in pagesize      int,
out recordCount int)
begin
    declare sTemp  varchar(21845);
    declare sSql   varchar(21845);
    declare sOrder varchar(1000);
    if asc_field = 1 then
        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';
    end if;
SET @pageCnt = 1; -- 总记录数 
 if sCondition <> '' then
SET @sqlCnt=CONCAT('select count(1) into @pageCnt from ',tablename,' where ',sCondition);
ELSE
SET @sqlCnt=CONCAT('select count(1) into @pageCnt from ',tablename);
end IF;
PREPARE s_cnt from @sqlCnt; 
EXECUTE s_cnt; 
 -- DEALLOCATE PREPARE s_cnt; 
SET recordCount = @pageCnt; 


if currpage<1 THEN
SET currpage=1;
end IF;
 #SET @pageIndex=CEILING(@pageCnt / pagesize);




#SET currpage=@pageIndex;


        if sCondition <> '' then
            set sSql = concat('select  ', columns, '  from  ', tablename);
            set sSql = concat(sSql, '  where  ', sCondition);  
   set sSql = concat(sSql, '  order by  ', order_field);   
  if  asc_field=1 then
    set sSql = concat(sSql, '  desc  ');
   else 
    set sSql = concat(sSql, '  asc  ');   
   end if;
            set sSql = concat(sSql, '  limit  ?,? ');
           
        else
           set sSql = concat('select  ', columns, '  from  ', tablename);
            #set sSql = concat(sSql, '  where ', sCondition);  
   set sSql = concat(sSql, '  order by  ', order_field);   
   if  asc_field=1 then
    set sSql = concat(sSql, '  desc  ');
   else 
    set sSql = concat(sSql, '  asc  ');   
   end if;
            set sSql = concat(sSql, '  limit  ?,? ');
        end if;




    set @iPageSize = pagesize;
    set @iPageIndex=(currpage-1)*pagesize; 
    set @sQuery = sSql;
    prepare stmt from @sQuery;
    execute stmt  using @iPageIndex,@iPageSize;


end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值