博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql之分页存储过程实例
阅读量:5953 次
发布时间:2019-06-19

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

DROP PROCEDURE IF EXISTS sp_page;CREATE PROCEDURE sp_page1(        PageIndex INT,  #页码      PageSize INT,   #每页记录数        OUT TotalCount INT  #总记录数    ) BEGINset @strSqls='select sql_calc_found_rows * from users';set @strSqls=CONCAT(@strSqls,' limit ',(PageIndex-1)*PageSize,',',PageSize);prepare strsql from @strSqls;execute strsql;deallocate prepare strsql;#计算总记录数set TotalCount = found_rows(); END调用:call sp_page(1,10,@a,@b);select @a;

 

 

 

 

DROP PROCEDURE IF EXISTS aaa;CREATE PROCEDURE aaa(        PageIndex INT,  #页码      PageSize INT,   #每页记录数        OUT TotalCount INT  #总记录数   ) BEGINDECLARE StartRow int;set StartRow=(PageIndex-1)*PageSize;SELECT  sql_calc_found_rows * FROM 表名limit StartRow,PageSize;#计算总记录数set TotalCount = found_rows(); END

 

 

 

 

------------------------------------------------------------

 

 

 

DROP PROCEDURE IF EXISTS sp_page;CREATE PROCEDURE sp_page(  IN UserID INT,-- 用户idIN PageIndex INT,-- 页码 从1开始IN PageSize INT,-- 页大小IN Conditions VARCHAR(2000),-- 过滤IN Orderbys VARCHAR(200),-- 排序OUT TotalCount INT-- 总记录数)BEGIN#处理whereSET @strWhere=' where 1=1 ';IF (UserID>0) THENSET @strWhere = CONCAT(@strWhere, ' AND  id =',UserID);END IF;#处理where end#处理conditionSET @strCondition = '';IF (IFNULL(Conditions,'') <> '') THEN SET @strCondition = CONCAT(' where 1=1 ',  Conditions);END IF;#处理condition end#处理排序SET @default_order='id asc'; -- 默认排序SET @orderBy = IF(IFNULL(Orderbys,'')='', @default_order,Orderbys);#处理排序 endSET @strSql = CONCAT('SELECT * from user ',@strWhere);#计算总记录数SET @exe_sql = CONCAT('SET @totalcount = (SELECT COUNT(1) FROM (', @strSql, ')  tb',  @StrCondition,');');PREPARE stmt FROM @exe_sql;EXECUTE stmt;SET TotalCount = @totalcount;#计算总记录数 endSET @exe_sql = @strSql;IF (IFNULL(@strCondition,'') > '') THEN  SET @exe_sql = CONCAT(' SELECT * FROM ( ',@strSql,' )  tb', @strCondition,' ORDER BY ',@orderBy, ' LIMIT ', (PageIndex-1)*PageSize, ',', PageSize,' ');ELSE   SET @exe_sql = CONCAT( @strSql,' ORDER BY ',@orderBy, ' LIMIT ', (PageIndex-1)*PageSize, ',', PageSize,' ');END IF; PREPARE stmt FROM @exe_sql; #select @exe_sql; EXECUTE stmt;END调用call sp_page3(1,1,10,'and id=1','username desc',@totalcount,@pagecount);SELECT @totalcount;DROP PROCEDURE IF EXISTS sp_page;CREATE PROCEDURE sp_page(IN CategoryID INT,IN PageIndex INT,-- 页码 从1开始IN PageSize INT,-- 页大小IN Orderbys VARCHAR(200),-- 排序OUT TotalCount INT-- 总记录数)BEGINSET @strWhere=' where 1=1 ';#处理whereIF (CategoryID>0) THENSET @strWhere = CONCAT(@strWhere, ' AND  CategoryID =',CategoryID);END IF;#处理where endSET @strSql = CONCAT('SELECT * from Article ',@strWhere);#处理排序SET @default_order='ArticleID asc'; -- 默认排序SET @orderBy = IF(IFNULL(Orderbys,'')='', @default_order,Orderbys);#处理排序 end#计算总记录数#SET @exe_sql = CONCAT('SET @totalcount = (SELECT COUNT(1) FROM (', @strSql, ')  tb;');SET @exe_sql = CONCAT('SET @totalcount = (SELECT COUNT(1) FROM (', @strSql, ')  tb',');');PREPARE stmt FROM @exe_sql;EXECUTE stmt;SET TotalCount = @totalcount;#计算总记录数 endSET @exe_sql = CONCAT( @strSql,' ORDER BY ',@orderBy, ' LIMIT ', (PageIndex-1)*PageSize, ',', PageSize,' '); PREPARE stmt FROM @exe_sql; #select @exe_sql; EXECUTE stmt;ENDcall sp_page(1,1,10,'',@totalcount);SELECT @totalcount;

 

转载于:https://www.cnblogs.com/zengnansheng/p/10389354.html

你可能感兴趣的文章
mysql 从库升级为主库的步骤
查看>>
inode满处理
查看>>
linux 定时任务 crond 服务介绍
查看>>
我和51CTO的缘分【我与51CTO一“七”成长】
查看>>
陈松松:知道这5个视频营销流量入口,你不缺流量
查看>>
Git 忽略文件
查看>>
Zabbix-server安装后的故障处理及Zabbix-agent的配置添加过程
查看>>
电子罗盘的分类
查看>>
分布式链路追踪工具skywalking 介绍
查看>>
struct和typedef struct
查看>>
Linux基础管理——磁盘管理及文件系统(全)
查看>>
【自用】手工编译lnmp环境
查看>>
普通用户通过Putty密钥方式登录
查看>>
网页显示3D模型
查看>>
第六章:thymeleaf页面模版-1. 信息输出
查看>>
Azure Table storage 基本用法
查看>>
Ubuntu 16.04 install Docker 1.12.0
查看>>
2012《Linux杂志》读者选择奖 (Readers' Choice Awards 2012- Linux Journal)
查看>>
21天让你成为Horizon View高手—Day11:手动池的创建
查看>>
Python迭代对象、迭代器、生成器
查看>>