`
- 浏览:
93291 次
- 性别:
- 来自:
杭州
-
CreatePROCEDURE`mysqltestuser_Select_PageAble`(
_WhereClauseVARCHAR(2000),--查找条件
_OrderByVARCHAR(2000),--排序条件
_PageSizeINT,--每页记录数
_PageIndexINT,--当前页码
_DoCountBIT--标志:统计数据/输出数据
)
NOTDETERMINISTIC
SQLSECURITYDEFINER
COMMENT''
BEGIN
--定义key字段临时表
DropTABLEIFEXISTS_TempTable_KeyID;--删除临时表,如果存在
CreateTEMPORARYTABLE_TempTable_KeyID
(
useridINT
)TYPE=HEAP;
--构建动态的sql,输出关键字key的id集合
--查找条件
SET@sql='SelectuseridFROMmysqltestuser';
IF(_WhereClauseisNOTNULL)AND(_WhereClause<>'')THEN
SET@sql=concat(@sql,'Where',_WhereClause);
ENDif;
IF(_OrderByisNOTNULL)AND(_OrderBy<>'')THEN
SET@sql=concat(@sql,'orDERBY',_OrderBy);
ENDIF;
--准备id记录插入到临时表
set@sql=concat('insertinto_TempTable_KeyID(userid)',@sql);
PREPAREstmtFROM@sql;
EXECUTEstmt;
DEALLOCATEPREPAREstmt;
--key的id集合[end]
--下面是输出
IF(_DoCount=1)then--统计
BEGIN
SelectCOUNT(*)ASRecordCountFROM_TempTable_KeyID;
END;
ELSE--输出记录集
BEGIN
--计算记录的起点位置
SET@startPoint=ifnull((_PageIndex-1)*_PageSize,0);
SET@sql='SelectA.*
FROMmysqltestuserA
INNERJOIN_TempTable_KeyIDB
ONA.userid=B.userid';
SET@sql=CONCAT(@sql,"LIMIT",@startPoint,",",_PageSize);
PREPAREstmtFROM@sql;
EXECUTEstmt;
DEALLOCATEPREPAREstmt;
END;
ENDIF;
DropTABLE_TempTable_KeyID;
END;
调用方法
--方法原型`mysqltestuser_Select_PageAble`(条件,排列顺序,每页记录数,第几页,是否统计数据)
--call`mysqltestuser_Select_PageAble`(_WhereClause,_OrderBy,_PageSize,_PageIndex,_DoCount)
--统计数据
call`mysqltestuser_Select_PageAble`(null,null,null,null,1)
--输出数据,没条件限制,10条记录/页,第一页
call`mysqltestuser_Select_PageAble`(null,null,10,1,0)
--输出数据,条件限制,排列,10条记录/页,第一页
call`mysqltestuser_Select_PageAble`('chinesenamelike''%飞3%''','useridasc',10,1,0)
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### MySQL分页存储过程概述 分页存储过程是一种在数据库层面上实现数据分页的技术。相比应用程序级别的分页,它能更高效地处理数据,减少网络传输的数据量,提升系统性能。在MySQL中,我们可以通过创建存储过程来...
通过上述分析可以看出,这个MySQL分页存储过程实现了灵活且高效的分页查询功能。它不仅能够根据用户提供的参数动态地构建查询语句,还能够处理排序、分组等复杂需求。对于需要频繁进行分页查询的应用场景来说,这种...
本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...
通用Mysql分页存储过程,支持多表查询。
针对mysql分页的一个存储过程,可以动态传入表名,可带查询条件,可带排序列
Mysql分页通用存储过程
非常好用的mysql存储过程,支持大并发,很稳定,绝对原创,你值得拥有!
### MySQL存储过程实现分页 #### 背景与需求 在数据库操作中,分页是一种常见的需求,尤其是在处理大量数据时。通过分页技术,可以有效地减少每次查询的数据量,提高系统的响应速度和用户体验。MySQL作为一种广泛...
经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒; 再生产环境中非常实用,帮助你解决线上数据库卡顿问题。
本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是数据库查询结果的一种展示方式,它将大量的数据分成若干个小部分,每次只显示一部分,这样用户可以逐页浏览,避免一...
本文将深入探讨如何通过使用存储过程来实现高效的分页存储过程,特别是针对ASP.NET应用程序。 标题 "效率高的分页存储过程实现的分页" 提到的是一种优化数据检索的技术。在ASP.NET开发中,GridView控件是常用的数据...
本文将深入解析一个MySQL分页存储过程的实现细节,该存储过程名为`prc_page_result`,旨在帮助数据库开发者更高效地进行分页查询。 #### 存储过程定义 `prc_page_result`存储过程接受多个参数,包括当前页码(`...
本通用分页存储过程经过我的验证,可以使用,支持联表查询,支持单表查询,效率我没测过太多,应该还可以。有需要的拿去用。 如果测试出效率,我们可以交流交流
这里我们将深入探讨标题中提到的三种分页存储过程方法:拼接字符串、SQL Server 2005 的 `TOP (表达式)` 功能以及利用 `ROW_NUMBER()` 函数。 1. **拼接字符串**: 在早期的SQL版本中,由于缺乏内置的分页功能,...
改造过的mysql版本的分页存储过程,严格测试,绝对好用.适合大型项目使用.
以下是一个在MySQL中的分页存储过程示例: ```sql CREATE PROCEDURE GetPagedData(IN page INT, IN pageSize INT) BEGIN SELECT * FROM table LIMIT (page - 1) * pageSize, pageSize; END ``` 调用这个存储...
在MySQL数据库中,存储过程是一种预编译的SQL语句集合,可以用于执行复杂的数据库操作。在特定场景下,我们可能需要动态创建或操作表,这时表名作为参数传递到存储过程内就显得非常实用。本文将深入讲解如何在MySQL...
"sql分页存储过程"是指利用存储过程实现数据查询时的分页功能,这在大数据量的查询中尤为重要,因为直接一次性返回所有结果可能会消耗大量系统资源并导致响应时间过长。 分页查询是数据库中常用的一种技术,它允许...
**MySQL分页** 在大量数据查询中,分页是非常实用的功能。在存储过程中,我们可以结合LIMIT和OFFSET关键字实现分页。以下是一个示例: ```sql SELECT * FROM table_name LIMIT page_size OFFSET (page_number - 1) *...
"sql分页存储过程"是指利用SQL语言编写的一个存储过程,这个过程专门用于执行分页查询。本文将详细讲解SQL分页存储过程的概念、原理以及如何实现。 首先,理解分页查询的基本概念。分页查询允许我们从数据库中按...