mysql 通用儲存過程分頁 海量資料分頁

2021-08-30 17:03:43 字數 1436 閱讀 5887

測試表

create table if not exists `test` (

`id` int(11) not null auto_increment,

`sort` int(11)

`title` varchar(50),

primary key  (`id`)

) engine=innodb default charset=gb2312 auto_increment=1 ;

儲存過程**

delimiter $$;

drop procedure if exists `sp_page`$$

create procedure `sp_page`(

in _pagecurrent int,/*當前頁*/

in _pagesize int,/*每頁的記錄數*/

in _ifelse varchar(1000),/*顯示字段*/

in _where varchar(1000),/*條件*/

in _order varchar(1000)/*排序*/

)comment '分頁儲存過程'

begin

if _pagesize<=1 then

set _pagesize=20;

end if;

if _pagecurrent < 1 then

set _pagecurrent = 1;

end if;

set @strsql = concat('select ',_ifelse,' from ',_where,' ',_order,' limit ',_pagecurrent*_pagesize-_pagesize,',',_pagesize);

prepare stmtsql from @strsql;

execute stmtsql;

deallocate prepare stmtsql;

set @strsqlcount=concat('select count(1) as count from ',_where);/*count(1) 這個字段最好是主鍵*/

prepare stmtsqlcount from @strsqlcount;

execute stmtsqlcount;

deallocate prepare stmtsqlcount;

end$$

delimiter ;$$

呼叫**

呼叫例1  call sp_page(1,3,'*','test','order by id desc');

呼叫例2  call sp_page(1,3,'*','test where sort=1','order by id desc');

呼叫例3  call sp_page(1,3,'id,title','test where sort=1','order by id desc');

mysql 通用儲存過程分頁 海量資料分頁

老話題了,不多說了看 吧 測試表create table if not exists test id int 11 not null auto increment,sort int 11 title varchar 50 primary key id engine innodb default ch...

mysql通用儲存過程分頁

完成乙個通用的儲存過程分頁 1.當前頁碼 1必填 2.每頁大小 5必填 3.任意表 employee 必填 4.任意的查詢列 num,name,tel,depno 可選 5.任意查詢條件 depno 1 可選 6.任意的排序列 birth 可選 7.任意的排序型別 asc desc asc 可選 8...

MySQL通用的分頁儲存過程

分頁的顯示效果 1 5 條資料 實現 delimiter create procedure t204.a column varchar 10 查詢的列名 table varchar 10 查詢的表名 pageindex int,查詢的頁碼數 linenumber int 查詢的行數 begin se...