Mysql分页查询通用存储过程
来源:互联网 发布:图纸软件哪个好 编辑:程序博客网 时间:2024/06/06 18:20
出处:http://blog.csdn.net/fcrpg2005/article/details/1522713
我稍微解释一下传进去的参数:
currpage:你想要访问的第几页
columns:你想要得到的列,所有可以填‘*’,部分可以填'column_1,column_2'
tablename:表名
sCondition:where后面的搜索条件,比如填写column_1 = 'hello mysql proc'
order_field:order by后面的语句,比如填写column_1
asc_field:如果设置为0则表示降序,否则为升序
primary_field:主键
page_size:一页多少条数据
前段时间没有给出SQLServer转到Mysql的通用存储过程,本着共享的精神,为大家奉献这段Mysql分页查询通用存储过程,假设所用数据库为guestbook:
use guestbook;delimiter $$drop procedure if exists prc_page_result $$create procedure prc_page_result (in currpage int,in columns varchar(500),in tablename varchar(500),in sCondition varchar(500),in order_field varchar(100),in asc_field int,in primary_field varchar(100),in pagesize int)begin declare sTemp varchar(1000); declare sSql varchar(4000); declare sOrder varchar(1000); if asc_field = 1 then set sOrder = concat(' order by ', order_field, ' desc '); set sTemp = '<(select min'; else set sOrder = concat(' order by ', order_field, ' asc '); set sTemp = '>(select max'; end if; if currpage = 1 then if sCondition <> '' then set sSql = concat('select ', columns, ' from ', tablename, ' where '); set sSql = concat(sSql, sCondition, sOrder, ' limit ?'); else set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?'); end if; else if sCondition <> '' then set sSql = concat('select ', columns, ' from ', tablename); set sSql = concat(sSql, ' where ', sCondition, ' and ', primary_field, sTemp); set sSql = concat(sSql, '(', primary_field, ')', ' from (select '); set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder); set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder); set sSql = concat(sSql, ' limit ?'); else set sSql = concat('select ', columns, ' from ', tablename); set sSql = concat(sSql, ' where ', primary_field, sTemp); set sSql = concat(sSql, '(', primary_field, ')', ' from (select '); set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder); set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder); set sSql = concat(sSql, ' limit ?'); end if; end if; set @iPageSize = pagesize; set @sQuery = sSql; prepare stmt from @sQuery; execute stmt using @iPageSize;end;$$delimiter;
可以存储为数据库脚本,然后用命令导入:
mysql -u root -p < pageResult.sql;
调用:call prc_page_result(1, "*", "Tablename", "", "columnname", 1, "PKID", 25);
PS:若要转载,请注明作者与出处。
- Mysql分页查询通用存储过程
- Mysql分页查询通用存储过程
- mysql分页查询通用存储过程
- Mysql分页查询通用存储过程
- Mysql分页查询通用存储过程
- 通用分页查询存储过程
- 分页查询存储过程[通用]
- 通用分页查询存储过程
- 通用分页查询存储过程
- MySql 通用分页存储过程
- MYSQL通用分页存储过程
- mysql分页通用存储过程
- mysql通用存储过程分页
- SQLServer分页查询通用存储过程
- 通用分页显示查询存储过程
- SQLServer分页查询通用存储过程
- SQLServer分页查询通用存储过程
- SQL之通用查询分页存储过程
- JVM伪共享
- 用memcachephp查看memcache命中率
- webbench
- How to run (git/ssh) authentication agent?
- 关于mysql数据库的数据类型numeric和decimal
- Mysql分页查询通用存储过程
- Event-Listerner事件监听模式
- 接地处理
- python logging 记录异常信息
- 页面:回到顶部
- 移动应用实用测试指南
- Cache系列Ehcache
- IOS学习笔记(11)TableView中移动cell和section
- MySQL 锁