mysql 分页 存储过程_mysql 存储过程分页 转载

/*

--名称:MYSQL版查询分页存储过程 by peace 2013-8-14

--输入参数:@fields -- 要查询的字段用逗号隔开

--输入参数:@tables -- 要查询的表

--输入参数:@where -- 查询条件

--输入参数:@orderby -- 排序字段

--输出参数:@page -- 当前页计数从1开始

--输出参数:@pagesize -- 每页大小

--输出参数:@totalcount -- 总记录数

--输出参数:@pagecount -- 总页数

*/

DROP PROCEDURE IF EXISTS Query_Pagination;

CREATE PROCEDURE Query_Pagination

(

in _fields varchar(2000),

in _tables text,

in _where varchar(2000),

in _orderby varchar(200),

in _pageindex int,

in _pagesize int,

in _sumfields varchar(200),/*增加统计字段2013-5-8 peaceli*/

out _totalcount int ,

out _pagecount int

)

begin

set @startRow = _pageSize*(_pageIndex -1);

set @pageSize = _pageSize; set @rowindex = 0;

set @strsql = CONCAT('select sql_calc_found_rows @rowindex:=@rowindex+1 as rownumber,',_fields,' from ',_tables,case ifnull(_where,'') when '' then '' else concat(' where ',_where) end,' order by ',_orderby,' limit ',@startRow,',',@pageSize);

prepare strsql from @strsql;

execute strsql;

deallocate prepare strsql;

set _totalcount = found_rows();

if (_totalcount <= _pageSize) then

set _pagecount = 1;

else if (_totalcount % _pageSize > 0) then

set _pagecount = _totalcount / _pageSize + 1;

else

set _pagecount = _totalcount / _pageSize;

end if;

end if;

if(ifnull(_sumfields,'') <> '') then set @sumsql = contact('select ',_sumfields,' from ',_tables,case ifnull(_where,'') when '' then '' else concat(' where ',_where) end); prepare sumsql from @sumsql; execute sumsql; deallocate prepare sumsql; end if; end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值