Mysql分页存储过程
来源:互联网 发布:定制家具生产软件 编辑:程序博客网 时间:2024/05/16 03:28
Create procedure `proc_pager`(
_WhereClause VARCHAR(2000), -- 查找条件_OrderBy VARCHAR(2000), -- 排序条件
_PageSize INT , -- 每页记录数
_PageIndex INT , -- 当前页码
_DoCount BIT -- 标志:统计数据/输出数据
)
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
-- 定义key字段临时表
DROP TABLE IF EXISTS _TempTable_KeyID; -- 删除临时表,如果存在
CREATE TEMPORARY TABLE _TempTable_KeyID
(
userid INT
)TYPE=HEAP;
-- 构建动态的sql,输出关键字key的id集合
-- 查找条件
SET @sql = 'SELECT userid FROM mysqltestuser';
IF (_WhereClause is NOT NULL) AND (_WhereClause <> '') THEN
SET @sql= concat(@sql, ' WHERE ' ,_WhereClause);
END if;
IF (_OrderBy is NOT NULL) AND (_OrderBy <>'') THEN
SET @sql= concat( @sql , ' ORDER BY ' , _OrderBy);
END IF;
-- 准备id记录插入到临时表
set @sql=concat('insert into _TempTable_KeyID(userid)', @sql);
PREPARE stmt FROM @sql;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
-- key的id集合 [end]
-- 下面是输出
IF (_DoCount=1) then -- 统计
BEGIN
SELECT COUNT(*) AS RecordCount FROM _TempTable_KeyID;
END;
ELSE -- 输出记录集
BEGIN
-- 计算记录的起点位置
SET @startPoint = ifnull((_PageIndex-1)*_PageSize,0);
SET @sql=' SELECT A.*
FROM mysqltestuser A
INNER JOIN _TempTable_KeyID B
ON A.userid =B.userid ';
SET @sql=CONCAT(@sql," LIMIT ",@startPoint," ,",_PageSize);
PREPARE stmt FROM @sql;
EXECUTE stmt ;
DEALLOCATE PREPARE stmt;
END;
END IF;
DROP TABLE _TempTable_KeyID;
END;
--------------------------------
-- 统计数据
call `proc_pager`(null, null, null, null, 1)
-- 输出数据,没条件限制,10条记录/页,第一页
call `proc_pager`(null, null, 10, 1,0)
-- 输出数据,条件限制,排列, 10条记录/页,第一页
call `proc_pager`('chinesename like ''%飞3%''', 'userid asc', 10, 1, 0)
- mysql 分页存储过程
- MySQL 分页存储过程
- MySql分页存储过程
- MySql分页存储过程
- MySql分页存储过程
- MySql分页存储过程
- MySql分页存储过程
- MySql分页存储过程
- Mysql分页存储过程
- Mysql分页存储过程
- Mysql分页存储过程
- MySql 分页存储过程
- mysql 分页存储过程
- MySQL分页存储过程
- MySql 分页存储过程
- mysql分页存储过程
- MySql 通用分页存储过程
- MySql分页存储过程1
- Somehow, an Incredible Robotic Dragonfly is Now on Indiegogo
- 赋值构造函数找错题
- android两种方式实现发送短信的功能代码
- 使用Intent跳转后清除以前所访问的页面
- 最长公共子序列dp
- Mysql分页存储过程
- JNI实现
- servlet中alert对话框汉字乱码问题
- MySQL数据库设置远程访问权限方法总结
- linux下用mython语言写的简单zeromq push/pull模式操作mysql数据
- PHP非线程安全与线程安全版本的选择技巧
- Windwos 编程源码例子下载:包括界面编程,网路编程,图像编程,多媒体编程等等
- free&Linux服务器系统内存监控方法详解
- 管理Activity的生命周期