Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 存储过程,在极限表达式中使用变量_Mysql_Variables_Stored Procedures_Limit - Fatal编程技术网

Mysql 存储过程,在极限表达式中使用变量

Mysql 存储过程,在极限表达式中使用变量,mysql,variables,stored-procedures,limit,Mysql,Variables,Stored Procedures,Limit,我有一个存储过程,如果我在其中编写以下不带变量的查询,all:运行良好 CREATE PROCEDURE `some_proc` () BEGIN SELECT blabla FROM mytable ORDER BY id LIMIT 3,1 ..... 但是,如果我在极限表达式中使用变量作为起始数,我会得到一个错误: CREATE PROCEDURE `some_proc` () BEGIN DECLARE start INT; SET start = 3; SELEC

我有一个存储过程,如果我在其中编写以下不带变量的查询,all:运行良好

 CREATE PROCEDURE `some_proc` ()
 BEGIN
 SELECT blabla FROM  mytable ORDER BY id LIMIT 3,1
 .....
但是,如果我在极限表达式中使用变量作为起始数,我会得到一个错误:

 CREATE PROCEDURE `some_proc` ()
 BEGIN
 DECLARE start INT;
 SET start = 3;
 SELECT blabla FROM  mytable ORDER BY id LIMIT start,1
 .....

有没有办法在存储过程内部的限制表达式中使用变量?

不能直接使用变量。我见过的一个很好的解决方法是-

CREATE PROCEDURE `some_proc` (
IN _START INTEGER, 
IN _LIMIT INTEGER 
)
BEGIN 
PREPARE STMT FROM 
" SELECT * FROM products LIMIT ?,? "; 
SET @START = _START; 
SET @LIMIT = _LIMIT; 
EXECUTE STMT USING @START, @LIMIT;
DEALLOCATE PREPARE STMT;
END $$ 
另一次搜索返回此-


此外,您还可以在中阅读有关准备语句的更多信息。

您可以在MySQL 5.5-

从文件中:

在存储程序中,可以使用 自MySQL起的整数值例程参数或局部变量 5.5.6

可能重复的