gpt4 book ai didi

mysql - 存储过程,在 LIMIT 表达式中使用变量

转载 作者:可可西里 更新时间:2023-11-01 06:34:38 24 4
gpt4 key购买 nike

我有一个存储过程,如果我在没有变量的情况下编写以下查询,所有:工作正常

 CREATE PROCEDURE `some_proc` ()
BEGIN
SELECT blabla FROM mytable ORDER BY id LIMIT 3,1
.....

但是,如果我在 LIMIT 表达式中使用变量作为起始编号,则会出现错误:

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

有没有办法在存储过程中的 LIMIT 表达式中使用变量?

最佳答案

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

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 $$

另一个搜索返回这个 - http://bugs.mysql.com/bug.php?id=8094 .

您还可以在 manual 中阅读更多关于预准备语句的信息.

关于mysql - 存储过程,在 LIMIT 表达式中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com