• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL 分页存储过程

MySQL 分页存储过程

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了代码片段,代码分享,PHP代码分享,Java代码分享,Ruby代码分享,Python代码分享,HTML代码分享,CSS代等相关知识,希望本文的分享对您有所帮助
/*
--名称:MYSQL版查询分页存储过程 
--输入参数:@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:=@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
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 更新数据库中表的统计信息
  • MySQL 存储过程中执行动态 SQL 语句
  • 金额大写转小写SQL
  • 财政年度表之建表约束
  • mysql查询今天,昨天,近7天,近30天,本月,上一月数据方法
  • 统计数据库每天的数据增长量
  • MySql批量插入性能优化
  • 各大数据库分段查询技术的实现方式
  • SQL 循环插入1000条数据
  • 删除SQL 某个表中重复的记录

相关文章

  • 2017-05-11mysql 优化日记
  • 2017-05-11MySQL 实用命令
  • 2018-12-05Hadoop集群间的hbase数据迁移
  • 2018-12-05MySQL学习笔记之创建、删除、修改表的方法_MySQL
  • 2018-12-05全文检索技术 sql server
  • 2018-12-05mysql 5.7更换数据库数据存储位置的实例详解
  • 2017-05-11phpmyadmin出现#2003服务器无响应解决方法小结
  • 2018-12-05使用cmd命令行窗口操作SqlServer的方法
  • 2018-12-05Oracle新建用户、角色,授权,建表空间的sql语句
  • 2018-12-05ORACLE 分区表的设计

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sqlserver 锁表语句分享
    • mysql多次调用存储过程的问题
    • Mysql CPU占用高的问题解决方法小结
    • 介绍一个简单的数据库Database 教程(四)
    • sql 相邻2条记录时间差比较
    • sql 判断数据库,表,存储过程等是否存在的代码
    • MYSQL WHERE语句优化
    • mysql性能监控工具Innotop简介及配置
    • 每个分类取最新的几条的SQL实现代码
    • mysql的索引底层之实现原理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有