如下所示MySQL存储过程中的一段代码,limit后面加了一个变量,而不是一个常量。
DECLARE var_num1 INT ;
SET var_num1=10;
SELECT * FROM test1 LIMIT var_num1 ;
.
MySQL 5.5+ 版本
以上内容在存储过程里可以正常执行。
.
MySQL 5.5 以下版本
以上内容在存储过程里执行报错,连过程都添加不了。
原因:
以前的版本,limit后面只能加常数,不能加变量。
处理方法:
使用动态SQL执行
DECLARE var_num1 INT ;
DECLARE var_sql VARCHAR(1024) ;
SET var_num1=10;
SET var_sql = CONCAT("SELECT * FROM test1 LIMIT ",var_num1," ;");
SET @exec_sql = var_sql;
PREPARE sql1 FROM @exec_sql;
EXECUTE sql1;