gpt4 book ai didi

mysql - 使用过程变量创建服务器端准备好的语句 - MySQL

转载 作者:行者123 更新时间:2023-11-29 22:46:43 25 4
gpt4 key购买 nike

在过程中,为什么使用特定于 session 的变量来存储字符串查询有效:

DELIMITER $$
CREATE PROCEDURE `test_prepared_stmt` () BEGIN
SET @q:="SELECT * FROM t1";
PREPARE query FROM @q;
#...
END$$

但使用过程变量不是:

DELIMITER $$
CREATE PROCEDURE `test_prepared_stmt` () BEGIN
DECLARE q TEXT;
SET q:="SELECT * FROM t1";
PREPARE query FROM q;
#...
END$$

而是抛出以下错误?

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'q;

END' at line 5

这只是语言的一个怪癖吗?

最佳答案

您需要使用 SQL 标准变量语法 - 所有变量均使用 @ 符号声明/使用。

因此,在您的示例中,如果您使用:

声明@q文本

或者,

声明@q nvarchar(4000)

或者任何类似的东西,它都会工作 - 只要遵循 SQL 规范来使用变量,你应该没问题,无论你是在过程中还是传递参数,或者其他什么。

关于mysql - 使用过程变量创建服务器端准备好的语句 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066014/

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