/*
--名称:MYSQL版查询分页存储过程
--输入参数:@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),/*增加统计字段*/
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

set @_totalcount=0;
set @_pagecount=0;
call Query_Pagination ('字段1,字段2......','表名','','id',1,20,'',@_totalcount,@_pagecount);
SELECT @_totalcount;
SELECT @_pagecount;

MYSQL版查询分页存储过程的更多相关文章

  1. SQL大数据查询分页存储过程

    最后一页分页一卡死,整个网站的性能都会非常明显的下降,不知道为啥,微软有这个BUG一直没处理好.希望SQL2012里不要有这个问题就好了. 参考代码如下: -- =================== ...

  2. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  3. MYSQL分页存储过程及事务处理--转自peace

    MYSQL的分页过程,和事务处理的一个测试过程. /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输 ...

  4. 分页系列之一:SQL Server 分页存储过程

    以下为最基本的代码结构,SQL Server 2012 开始支持 CREATE PROCEDURE procXXX @Page int, --当前页码,从1开始 @PageSize int --每页记 ...

  5. MySql通用分页存储过程

    MySql通用分页存储过程 1MySql通用分页存储过程 2 3过程参数 4p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4 ...

  6. mysql数据库管理工具sqlyog在首选项里可以设置默认查询分页条数和字体,改写关键字大小写

    sqlyog设置一直习惯用sqlyog来管理mysql数据库,但有三个地方用得不是很爽:1.默认查询条数只有1000条经常需要勾选掉重新查询.2.自动替换关键字大小写,有时候字段名为关键字的搞成大写的 ...

  7. mysql和oracle 分页查询(转)

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  8. 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版

    一.前言 多条件查询分页以及排序  每个系统里都会有这个的代码 做好这块 可以大大提高开发效率  所以博主分享下自己的6个版本的 多条件查询分页以及排序 二.目前状况 不论是ado.net 还是EF ...

  9. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

随机推荐

  1. codeforces Round 442 B Nikita and string【前缀和+暴力枚举分界点/线性DP】

    B. Nikita and string time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  2. POJ 3083 Children of the Candy Corn (DFS + BFS + 模拟)

    题目链接:http://poj.org/problem?id=3083 题意: 这里有一个w * h的迷宫,给你入口和出口,让你分别求以下三种情况时,到达出口的步数(总步数包括入口和出口): 第一种: ...

  3. oracle 替换其中部分内容

    update TABLE_NAME set field =REPLACE(field ,substr(field ,0,1) ,'P') where field is not null ;

  4. [xsy2962]作业

    题意:$f_0=1-\dfrac1e,f_n=1-nf_{n-1}$,求$f_n(n\leq10000)$,保留四位小数 这题代码只有⑨行但是题解很神... 因为递推式中有乘法,所以直接按题目来推肯定 ...

  5. [UOJ164]V

    线段树真是好东西... 每个线段树节点维护四个标记:$a,b,maxa,maxb$,$(a,b)$表示对子树内的所有数执行$x'=\max(x+a,b)$,$maxa,maxb$是历史最大标记,初始时 ...

  6. 【递归】先修课 计算概论(A) / 函数递归练习(3)2:分解因数

    #include<cstdio> using namespace std; bool is_prime(int x) { ;i*i<=x;i++) ) return false; r ...

  7. 【set】【multiset】bzoj1058 [ZJOI2007]报表统计

    对n个位置,每个位置维护一个vector. 每次插入,可能对MIN_SORT_GAP产生的影响,只可能是 插入元素 和 它的 前驱 后继 造成的,用一个set维护(存储所有序列中的元素). 我们还得维 ...

  8. [CF915F]Imbalance Value of a Tree

    [CF915F]Imbalance Value of a Tree 题目大意: 一棵\(n(n\le10^6)\)个结点的树,每个结点有一个权值\(w_i\).定义\(I(i,j)\)为\(i\)到\ ...

  9. 1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)

    一.JSP简介 JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码, 实现动态的提供数据.访问JSP时服务器会将JSP翻译成Servlet,访 ...

  10. CLR探索系列:Windbg+SOS动态调试分析托管代码

    http://blog.csdn.net/garyye/article/details/4788070   在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...