LoginSignup
0
0

More than 3 years have passed since last update.

MySQLのストアドプロシージャでページャー作成

Last updated at Posted at 2019-06-08

プロシージャ削除

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 ;

使い方

CALL PAGER(2, 10, 100, @FIRSTLIMIT, @TOTALPAGE);
SELECT @FIRSTLIMIT AS FIRSTLIMIT, @TOTALPAGE AS TOTALPAGE FROM DUAL;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0