mysql分页查询通用存储过程
2011-03-07 15:03
531 查看
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; $$
调用:
/*
1。当前页2.查询的列,3.表名,4.列名,排序方式,1为倒序,排序的列名,页大小
*/
CALL prc_page_result(1, "*", "solexa_annotation", "", "queryName", 1, "id", 25);
原文:
java调用:
1. CallableStatement call = conn.prepareCall("{Call proc(?)}");
2. call.setString(1, 参数);
3. rs = call.executeQuery();
Session session =HibernateSessionFactory.getSession();
SQLQuery query = session.createSQLQuery("{Call proc()}");
List list =query.list();
1. SQLQuery query = session.createSQLQuery("{Call proc(?)}");
2. query.setString(0, 参数);
3. List list =query.list();
create PROCEDURE proc()
begin
select * from proctab;
end ;
相关文章推荐
- SQL查询通用存储过程(可分页)
- 通用的数据库分页查询存储过程
- 通用分页存储过程注入问题解决方案:不用存储过程,通用分页查询方法
- SQL Server 分页查询通用存储过程(只做分页查询用)
- 查询分页操作的一个通用存储过程
- Mysql分页查询通用存储过程
- Util工具类 跨Oracle、MySQL通用分页查询
- 通用存储过程(增、删、改、查询分页)
- MySql通用分页存储过程
- mysql 分页创建存储过程并实现模糊查询
- 又一个通用分页存储过程,支持表别名,多表联合查询SQL语句
- 海量数据库的查询优化及分页算法方案(二)-实现小数据量和海量数据的通用分页显示存储过程 [转]
- mysql通用分页存储过程遇到的问题
- mysql通用分页存储过程遇到的问题(转载)
- 通用的可带查询条件的SQL语句的分页存储过程
- 又一个通用分页存储过程,支持表别名,多表联合查询SQL语句--转载
- 通用分页查询存储过程
- 通用分页查询存储过程
- SQL Server 分页查询通用存储过程(只做分页查询用)