MYSQL基础小测试(九)
在存储过程中完成 sh_goods表中数据分页查询功能:
-
创建一个名为 page_proc的存储过程,并为其设置传入的参数,参数分别为当前的页码数以及每页显示的最大记录数. 获取分页的总记录数,并利用传递的参数计算总页数拼接分页的查询语句. 根据传递的参数查询指定分页的记录,如第2页的记录.
# 第1步:创建存储过程 DELIMITER $$ CREATE PROCEDURE page_proc(IN curp INT, IN per_page INT) BEGIN # 第2步:在此处完成数据编程 END; $$ DELIMITER ; # 第2步:获取分页的数据 # ① 定义变量 DECLARE total_records, total_page, start INT; # ② 从指定的数据表中获取总记录数 SELECT COUNT(*) INTO total_records FROM sh_goods; # ③ 判断per_page是否符合要求 IF per_page <= 1 THEN SET per_page = 3; END IF; # ④ 根据total_records和per_page计算总页数 SET total_page = CEIL(total_records / per_page); # ⑤ 判断curp是否符合要求 IF curp < 1 THEN SET curp = 1; ELSEIF curp > total_page THEN SET curp = total_page; END IF; # ⑥ 计算记录的偏移量 SET start = (curp - 1) * per_page; # ⑦ 根据分页获取数据 SET @sql_stmt = CONCAT(SELECT * FROM sh_goods LIMIT , start,, , per_page); PREPARE paging FROM @sql_stmt; EXECUTE paging; DEALLOCATE PREPARE paging; # 第3步:获取指定分页的记录 CALL page_proc(2,4); CALL page_proc(-2,4); CALL page_proc(50,20); CALL page_proc(3,1); CALL page_proc(5,1); CALL page_proc(-1,1);
