-- 创建分页存储过程
-- 1 判断存在即删除
DROP PROCEDURE IF EXISTS popp;
-- 2 创建万能分页
CREATE  PROCEDURE popp
(
_fls VARCHAR(200), -- 查询字段.默认 *
_name VARCHAR(100),-- 表名
_where VARCHAR(200),-- where过滤条件, 默认 1=1
_orderby VARCHAR(200),-- 排序条件,
_pageIndex INT, -- 当前页数
_pageSize INT, -- 每页条数
OUT _allCount INT,-- 总条数
OUT _allPage INT -- 总页数
)
BEGIN
-- 1.计算开始行
SET @startrow = (_pageIndex-1)*_pageSize;
-- 2.计算结束行
SET @endrow = _pageSize;
-- 拼接字符串
SET @strsql = CONCAT(
' SELECT ',
' SQL_CALC_FOUND_ROWS ',
_fls,
' FROM ',
_name,
CASE IFNULL(_where,'') WHEN '' THEN '' ELSE CONCAT(' where ',_where) END,
CASE IFNULL(_orderby,'') WHEN '' THEN '' ELSE CONCAT(' order by ',_orderby) END,
' LIMIT ',
@startrow,
' , ',
@endrow
);
-- 把字符串转化为sql语句
PREPARE strsql FROM @strsql;
-- 5.执行SQL
EXECUTE strsql;
-- 6.去掉转换
DEALLOCATE PREPARE strsql;
-- 7.获取总条数
SET _allCount = FOUND_ROWS();
-- 8.计算总页数
IF _pageSize > _allCount THEN
SET _allPage =1;
ELSE
SET _allPage = CEILING(_allCount*1.0/_pageSize);
END IF;
END;
-- 调用万能分页存储过程
CALL popp('*','planInfo','1=1',NULL,1,3,@AllCount,@AllPage);
SELECT @AllCount,@AllPage;
05-11 19:57
查看更多