mysql SP中的限制子句只取一个参数,即行数(偏移量)

时间:2013-11-19 06:26:21

标签: mysql stored-procedures

我一直在尝试使用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;

我用很多调试工具对它进行了测试,阅读了很多文章来确认这个案例..但是如果我错了,请告诉我。

3 个答案:

答案 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开始的局部变量来指定。

MySQL 5.5: SELECT syntax