/*
--名稱:mysql版查詢分頁儲存過程 by peace 2013-8-14
--輸入引數:@fields -- 要查詢的字段用逗號隔開
--輸入引數:@tables -- 要查詢的表
--輸入引數:@where -- 查詢條件
--輸入引數:@orderby -- 排序字段
--輸出引數:@page -- 當前頁計數從1開始
--輸出引數:@pagesize -- 每頁大小
--輸出引數:@totalcount -- 總記錄數
--輸出引數:@pagecount -- 總頁數
*/drop procedure if exists query_pagination;
create procedure query_pagination
(in _fields varchar(2000),
in _tables text,
in _where varchar(2000),
in _orderby varchar(200),
in _pageindex int,
in _pagesize int,
in _sumfields varchar(200),/*增加統計欄位2013-5-8 peaceli*/
out _totalcount int ,
out _pagecount int
)begin
set @startrow = _pagesize*(_pageindex -1);
set @pagesize = _pagesize; set @rowindex = 0;
set @strsql = concat('select sql_calc_found_rows @rowindex:=@rowindex+1 as rownumber,',_fields,' from ',_tables,case ifnull(_where,'') when '' then '' else concat(' where ',_where) end,' order by ',_orderby,' limit ',@startrow,',',@pagesize);
prepare strsql from @strsql;
execute strsql;
deallocate prepare strsql;
set _totalcount = found_rows();
if (_totalcount <= _pagesize) then
set _pagecount = 1;
else if (_totalcount % _pagesize > 0) then
set _pagecount = _totalcount / _pagesize + 1;
else
set _pagecount = _totalcount / _pagesize;
end if;
end if;
if(ifnull(_sumfields,'') <> '') then set @sumsql = contact('select ',_sumfields,' from ',_tables,case ifnull(_where,'') when '' then '' else concat(' where ',_where) end); prepare sumsql from @sumsql; execute sumsql; deallocate prepare sumsql; end if; end
mysql儲存過程傳入表名做引數,進行分頁處理
儲存過程 drop procedure if exists pagepro create definer root localhost procedure pagepro in pageno int,in pagesize int,in tablename varchar 50 begin decl...
分頁儲存過程 分頁儲存過程
分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...
Mysql儲存過程 處理分頁
mysql儲存過程 處理分頁 分頁功能在任何應用中都比較常見,而 mysql 的儲存過程分頁必須通過動態 sql 來執行。分頁對應的 offset 和 row count 必須先用 concat 函式變成字串組裝到 sql 中 如語句 1 而不能直接使用 如語句 2 mysql 不支援 mysql ...