存储过程:
DROP PROCEDURE IF EXISTS `pagePro`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `pagePro`(in pageNo int,in pageSize int,in tableName varchar(50))
BEGIN
DECLARE startIndex INT;
set startIndex = pageSize * (pageNo-1);
set @s = concat("select * from ",tableName," LIMIT ",startIndex,",",pageSize);
prepare stmt from @s;
execute stmt;
DEALLOCATE prepare stmt;
END;
传入三个参数,pageNo 是页号,pageSize是一页显示的记录数量,tableName是表名.
mysql 是不支持表名,列名做参数的.只能采用动态拼接的方法来生成sql语句.
调用存储过程:
call pagePro(2,3,'student');
结果为:
904 李四 男 2017-02-28 英语系 0 辽宁省阜新市
905 王五 女 2017-02-28 英语系 1 福建省厦门市
906 王六 男 2017-02-28 计算机系 1 湖南省衡阳市