プロシージャ削除
DROP PROCEDURE IF EXISTS PAGER;
プロシージャ作成
DELIMITER //
CREATE PROCEDURE PAGER(
IN PAGE INT(10), /* 表示したいページ */
IN LIMITCNT INT(10), /* ページ表示件数 */
IN TOTALITEM INT(10), /* トータルアイテム数 */
OUT FIRSTLIMIT INT(10), /* 最初の件番 */
OUT TOTALPAGE INT(10) /* トータルページ数 */
)
BEGIN
DECLARE EXIT HANDLER FOR SQLWARNING, NOT FOUND, SQLEXCEPTION
BEGIN
SET FIRSTLIMIT := 0;
SET TOTALPAGE := 0;
END;
SET FIRSTLIMIT := 0;
SET TOTALPAGE := CEIL(TOTALITEM / LIMITCNT);
IF PAGE > 1 THEN
SET FIRSTLIMIT := (TOTALITEM / TOTALPAGE) * (PAGE - 1);
END IF;
END;
//
DELIMITER ;
使い方
- @FIRSTLIMIT に最初の件数
- @TOTALPAGE にトータルのページ数
CALL PAGER(2, 10, 100, @FIRSTLIMIT, @TOTALPAGE);
SELECT @FIRSTLIMIT AS FIRSTLIMIT, @TOTALPAGE AS TOTALPAGE FROM DUAL;