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);
经验分享 程序员 微信小程序 职场和发展