gpt4 book ai didi

带有预准备语句的 MySQL 存储过程不起作用

转载 作者:行者123 更新时间:2023-11-29 07:50:07 26 4
gpt4 key购买 nike

我有以下存储过程:

CREATE PROCEDURE getLastValueAutomaticShelter(IN fieldName varchar(30), position_number INT)
BEGIN
SET @query = CONCAT('SELECT * FROM automatic_changes WHERE',fieldName,'IS NOT NULL AND P_id=?');
PREPARE stmt FROM @query;
SET @position_number=position_number;
EXECUTE stmt USING @position_number;
DEALLOCATE PREPARE stmt;
END

然后我正在运行它:

mysql> call getLastValueAutomaticShelter('current_level', 500)//

并出现以下错误:

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 'NOT N
ULL AND P_id=?' at line 1

有什么想法吗?谢谢。

最佳答案

您需要在其中添加一些空格:

SET @query = CONCAT('SELECT * FROM automatic_changes WHERE ',fieldName,' IS NOT NULL AND P_id=?');
/* right ^ here....and ^ here*/

否则您的最终查询可能如下所示:

SELECT * FROM automatic_changes WHEREcolumnameIS NOT NULL AND P_id='whatever';

你明白了:)

关于带有预准备语句的 MySQL 存储过程不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710492/

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