Mysql 存储过程,在极限表达式中使用变量
我有一个存储过程,如果我在其中编写以下不带变量的查询,all:运行良好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
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 可能重复的