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:[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,‘ from ‘,_tables,case ifnull(_where,‘‘) when ‘‘ then ‘‘ else concat(‘ where ‘,_where) end); prepare sumsql from @sumsql; execute sumsql; deallocate prepare sumsql; end if; end
时间: 2024-08-04 02:08:50

mysql 存储过程分页 转载的相关文章

MySql通用分页存储过程

MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int,out p_recordcount int,out p_pagecount int 5 6$$:begin 7 declare v_sqlcounts varchar(4000); 8

MySQL存储过程详解 mysql 存储过程

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保

MySQL的分页

有朋友问: MySQL的分页似乎一直是个问题,有什么优化方法吗?网上看到网上推荐了一些分页方法,但似乎不太可行,你能点评一下吗? 方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N. ---适应场景: 适用于数据量较少的情况(元组百/千级). ---原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3).Limit限制的是从结果集的M位置处取

atitit。mssql sql server 转换mysql 及 分页sql ast的搭建

atitit.mssql sql server 转换mysql  及 分页sql ast的搭建 1. 主要的的转换::函数的转换,分页的转换 1 2. 思路::mssql sql >>ast>>mysql 1 3. sql主要的如下::: 1 4. Mssql2MysqlConvertor (proj:wechatAdm4propt 2 1. 主要的的转换::函数的转换,分页的转换 2. 思路::mssql sql >>ast>>mysql 3. sql主要

mysql 存储过程简单学习

转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合,将这些sql命令有组织的形成一个小程序,这样会实现很复杂的处理 SQL基本是一个命令一个命令执行,虽然可以通过连接.子查询等实现些高级的处理,但局限性是显而易见的 ■存储过程的优势 1.提高执行性能(存储过程事先完成了解析.编译的处理,执行时能减轻数据库负担) 2.可减轻网络负担(比起多次传递SQ

mysql存储过程详细教程

记录mysql存储过程中的关键语法:DELIMITER //  声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int)  声明存储过程BEGIN .... END  存储过程开始和结束符号SET @p_in=1   变量赋值 DECLARE l_int int unsigned default 4000000;  变量定义 什么是mysql存储例程? 存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来

mybatis调用mysql存储过程返回结果集

存储过程中经常需要返回结果集. Mysql 中直接用 select 即可返回结果集.而 oracle 则需要使用游标来返回结果集.这一点 Mysql 相对比较方便,如下代码即可实现输出结果集: 存储过程定义: DELIMITER $$ DROP procedure IF EXISTS pro_sql_data1 $$ CREATE procedure pro_sql_data1(in sear_name varchar(2000)) BEGIN if sear_name is not null

mysql 存储过程,传人字符串数组

mysql存储过程解决数组传参及游标CURSOR的问题解决方案 项目中遇到批量数据的处理,使用hibernate的出来太慢,修改为存储过程. 第一版修改为应用循环调存储过程,发现效果不理想.可能是频繁的打开session和关闭. 第二版想法为,把所有参数传入到存储过程,循环参数为一个数组,mysql存储过程里没有split函数, 取数组中的值通过substring截出,通过截的id值作为条件查询数据,查询到的数据有可能是 多条记录,所有想通过游标(CURSOR)进行结果集的循环进行处理,但是,

熟知MySQL存储过程

存储过程(Stored Procedure)是一组为了完毕特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给定參数(假设该存储过程带有參数)来调用运行它. MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.大大提高数据库的处理速度.同一时候也能够提高数据库编程的灵活性. 过程:封装起来的若干条语句,调用时这些封装体运行.把此过程存储到数据库中即存储过程. 函数:是一个有返回值的"过程". 过程:没有返回值的函数. 存储过程的长处: 1.存储过程