我一直在尝试使用mysql中的SP创建分页,但我没有使用limit子句来完成它。 极限情况下的起点永远不会改变,即使我自己在查询中传递它。
例如。 'select * from abc where limit 30,60'
从第1行开始直到第60行。
这是我一直在处理的代码
PROCEDURE theme_engine.paginate(IN upageno int(100))
BEGIN
DECLARE rstart int(10) ;
DECLARE rends int(10) ;
DECLARE squery varchar(200) ;
SET @rstart =(upageno - 1) * 15 ;
SET @rends = upageno * 15 ;
set @squery =concat('select * from primaryinfo limit ',rstart,',',rends );
SET @aa= @squery;
PREPARE STMT FROM @squery ;
EXECUTE STMT ;
DEALLOCATE PREPARE STMT ;
END;
我用很多调试工具对它进行了测试,阅读了很多文章来确认这个案例..但是如果我错了,请告诉我。
答案 0 :(得分:0)
select * from primaryinfo limit 1,60
答案 1 :(得分:0)
尝试使用此变量进行查询。查询的Concat开始和结束限制
set @squery =concat('select * from primaryinfo limit ',rstart ,' , ',rends);
代替:set @squery =concat('select * from primaryinfo limit 30,60' );
答案 2 :(得分:0)
您可以直接使用过程参数。从文档 - 在存储程序中,LIMIT参数可以使用整数值例程参数或自MySQL 5.5.6开始的局部变量来指定。