Mysql分页查询通用存储过程

时间:2022-05-31 06:23:03

前段时间没有给出SQLServer转到Mysql的通用存储过程,本着共享的精神,为大家奉献这段Mysql分页查询通用存储过程,假设所用数据库为guestbook: 

Mysql分页查询通用存储过程use guestbook;
Mysql分页查询通用存储过程delimiter $$
Mysql分页查询通用存储过程
drop procedure if exists prc_page_result $$
Mysql分页查询通用存储过程
create procedure prc_page_result (
Mysql分页查询通用存储过程
in currpage      int,
Mysql分页查询通用存储过程
in columns       varchar(500),
Mysql分页查询通用存储过程
in tablename     varchar(500),
Mysql分页查询通用存储过程
in sCondition    varchar(500),
Mysql分页查询通用存储过程
in order_field   varchar(100),
Mysql分页查询通用存储过程
in asc_field     int,
Mysql分页查询通用存储过程
in primary_field varchar(100),
Mysql分页查询通用存储过程
in pagesize      int
Mysql分页查询通用存储过程)
Mysql分页查询通用存储过程
begin
Mysql分页查询通用存储过程    
declare sTemp  varchar(1000);
Mysql分页查询通用存储过程    
declare sSql   varchar(4000);
Mysql分页查询通用存储过程    
declare sOrder varchar(1000);
Mysql分页查询通用存储过程    
Mysql分页查询通用存储过程    
if asc_field = 1 then
Mysql分页查询通用存储过程        
set sOrder = concat(' order by ', order_field, ' desc ');
Mysql分页查询通用存储过程        
set sTemp  = '<(select min';
Mysql分页查询通用存储过程    
else
Mysql分页查询通用存储过程        
set sOrder = concat(' order by ', order_field, ' asc ');
Mysql分页查询通用存储过程        
set sTemp  = '>(select max';
Mysql分页查询通用存储过程    
end if;
Mysql分页查询通用存储过程    
Mysql分页查询通用存储过程    
if currpage = 1 then
Mysql分页查询通用存储过程        
if sCondition <> '' then
Mysql分页查询通用存储过程            
set sSql = concat('select ', columns, ' from ', tablename, ' where ');
Mysql分页查询通用存储过程            
set sSql = concat(sSql, sCondition, sOrder, ' limit ?');
Mysql分页查询通用存储过程        
else
Mysql分页查询通用存储过程            
set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?');
Mysql分页查询通用存储过程        
end if;
Mysql分页查询通用存储过程    
else
Mysql分页查询通用存储过程        
if sCondition <> '' then
Mysql分页查询通用存储过程            
set sSql = concat('select ', columns, ' from ', tablename);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' where ', sCondition, ' and ', primary_field, sTemp);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, '(', primary_field, ')'' from (select ');
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' limit ?');
Mysql分页查询通用存储过程        
else
Mysql分页查询通用存储过程            
set sSql = concat('select ', columns, ' from ', tablename);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' where ', primary_field, sTemp);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, '(', primary_field, ')'' from (select ');
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' ', primary_field, ' from ', tablename, sOrder);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)', sOrder);
Mysql分页查询通用存储过程            
set sSql = concat(sSql, ' limit ?');
Mysql分页查询通用存储过程        
end if;
Mysql分页查询通用存储过程    
end if;
Mysql分页查询通用存储过程    
set @iPageSize = pagesize;
Mysql分页查询通用存储过程    
set @sQuery = sSql;
Mysql分页查询通用存储过程    
prepare stmt from @sQuery;
Mysql分页查询通用存储过程    
execute stmt using @iPageSize;
Mysql分页查询通用存储过程
end;
Mysql分页查询通用存储过程$$
Mysql分页查询通用存储过程delimiter;

可以存储为数据库脚本,然后用命令导入:

mysql -u root -p < pageResult.sql;

调用:call prc_page_result(1, "*", "Tablename", "", "columnname", 1, "PKID", 25);

PS:若要转载,请注明作者与出处。