MySQL 分页存储过程 (转)
发布时间:2020-12-26 07:03:43 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 /*--名称:MYSQL版查询分页存储过程 by peace 2013-8-14--输入参数:@fields -- 要查询的字段用逗号隔开--输入参数:@tables -- 要查询的表--输入参数
|
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 /*
--名称:MYSQL版查询分页存储过程 by peace 2013-8-14
--输入参数:@fields -- 要查询的字段用逗号隔开
--输入参数:@tables -- 要查询的表
--输入参数:@where -- 查询条件
--输入参数:@orderby -- 排序字段
--输出参数:@page -- 当前页计数从1开始
--输出参数:@pagesize -- 每页大小
--输出参数:@totalcount -- 总记录数
--输出参数:@pagecount -- 总页数
--输出参数:_sumfields -- 统计字段
*/
DROP PROCEDURE IF EXISTS Proc_Page;
CREATE PROCEDURE Proc_Page
(
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),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:[email?protected]+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,_where) end);
prepare sumsql from @sumsql;
execute sumsql;
deallocate prepare sumsql;
end if;
end
以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


