Mysql分页查询通用存储过程

时间:2022-02-27 04:43:46

前段时间没有给出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:若要转载,请注明作者与出处。