博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 翻页 存储过程_MySQl通用翻页(存储过程)
阅读量:1531 次
发布时间:2019-04-21

本文共 1741 字,大约阅读时间需要 5 分钟。

#####################################################

#参数表

#1.sqlstr sql语句字符串

#2.pageNo 页码

#3.pageSize 页尺寸

#in sqlstr varchar(50),in pageNo int,in pageSize int

#####################################################

begin

#总页数

declare sqlstr_new varchar(100);

#传入SQL总长度

declare sqlLength int default 0;

#SQL关键字'from'的位置

declare keyWordFromPos int default 1;

#当前页码

set @currentPageNo=0;

#总页数

set @pageTotal=0;

#总记录数

set @records=0;

#转成小写字母SQL

set sqlstr_new=lcase(sqlstr);

#取得SQL总长度

set sqlLength=length(sqlstr);

#取得关键字'from'的位置

set keyWordFromPos=instr(sqlstr_new,'from');

#截取'from'之后的SQL

set @sub_sql_after_from = substr(sqlstr_new,keyWordFromPos,sqlLength);

#重建取记录总数SQL

set @rscount_sql=concat('select count(*) into @records' ,' ',@sub_sql_after_from);

#取得'from'之前的SQL

set @sub_sql_before_from= rtrim(ltrim(substr(sqlstr_new,1,keyWordFromPos-1)));

#重建查询SQL

set @pageSQL=concat(@sub_sql_before_from,',@currentPageNo,@pageTotal,@records',' ',@sub_sql_after_from);

#统计总记录数

prepare rsCount_pre from @rscount_sql;

execute rsCount_pre;

deallocate prepare rsCount_pre;

#分页

set @temp=@records%pageSize;

if @records<=pageSize then

set @pageTotal=1;

elseif @temp=0 then

set @pageTotal=@records div pageSize;

else

set @pageTotal=@records div pageSize+1;

end if;

#过滤不合法的边界,防止页码不合法

if pageNo>@pageTotal then

set pageNo=@pageTotal;

elseif pageNo<1 then

set pageNo=1;

end if;

#生成分页索引

set @currentPageNo=pageNo;

set @pageIndex=1;

set @pageIndex=pageSize*(pageNo-1);

#重组SQL

set @pageSQL=concat(@pageSQL,' ','limit',' ',@pageIndex,',',pageSize);

#查询结果

prepare pageExecute from @pageSQL;

execute pageExecute;

deallocate prepare pageExecute;

end

备注:

1.Mysql中的整除

在Mysql中想用两个整数进行整除不能用"a/b" 而要用 a div b;

2.Mysql中的取余数(取模)

要用 a mod b或 a%b

3.Mysq中四舍五入

round(1.5)

结果为2

转载地址:http://lhkdy.baihongyu.com/

你可能感兴趣的文章
Simulink框图转C代码笔记
查看>>
Word修改默认英文字体为Times New Roman
查看>>
Word页面底部有空白却自动换行的解决方案
查看>>
振动抑制浏览笔记
查看>>
MATLAB - 双y坐标绘图
查看>>
Matlab中legend的位置
查看>>
Eigen3矩阵与数组的互相转换
查看>>
动力学方程MCG矩阵的计算
查看>>
windows下Makefile无法删除中间文件的解决方案
查看>>
Simulink生成ROS功能包的步骤总结
查看>>
硬件在环(HIL)仿真方案
查看>>
基于模型设计(MBD)的机器人开发流程
查看>>
机器人非实时性示教系统的框架
查看>>
协作机械臂伺服驱动关键技术公开课笔记
查看>>
从伺服系统来看如何提升机器人的轨迹精度 公开课笔记
查看>>
关于Adams安装过程中问题的解决记录
查看>>
kinova-Mico安装与调试
查看>>
Elmo运动控制器 —— Maestro Software编程实践指南
查看>>
Elmo运动控制器 —— Maestro Software结构和接口
查看>>
Power PMAC运动控制器 —— 学习笔记2
查看>>