delimiter |
create procedure page_proce(
_column varchar(1000) ,
_table varchar(50) ,
_condition varchar(1000) ,
_order varchar(1000) ,
_pageCurrent int ,
_pageSize int ,
out _poutRecordCount int
)
begin
declare pageCnt int;
declare limitStart int;
declare limitEnd int;
declare sqlCnt varchar(3000);
declare _sql varchar(3000);
set @pageCnt=1 ;
set @limitStart = ( _pageCurrent - 1 ) * _pageSize ;
set @limitEnd = _pageCurrent * _pageSize ;
set @sqlCnt = CONCAT('select count(*) into @pageCnt from ',_table) ;
set @_sql = CONCAT('select ',_column,' from ',_table) ;
if _condition IS NOT NULL AND _condition <> '' then
set @sqlCnt = CONCAT(@sqlCnt,' where ',_condition) ;
set @_sql = CONCAT(@_sql,' where ',_condition) ;
end if ;
if _order IS NOT NULL AND _order <> '' then
set @_sql = CONCAT(@_sql,' order by ',_order) ;
end if ;
set @_sql = CONCAT(@_sql,' limit ',@limitStart,',',@limitEnd) ;
prepare s_cnt from @sqlCnt ;
EXECUTE s_cnt ;
deallocate prepare s_cnt ;
set _poutRecordCount=@pageCnt ;
prepare record from @_sql ;
execute record ;
deallocate prepare record ;
end
|