gpt4 book ai didi

mysql - MySQL 存储过程中 SET 出现神秘语法错误

转载 作者:行者123 更新时间:2023-11-29 06:14:18 25 4
gpt4 key购买 nike

我有一个简单的表,有两列:一个名为 id 的自动增量 int 列和一个名为 start 的日期列。我正在尝试编写一个存储过程,给定一个值,它将计算将其绑定(bind)到的适当记录。问题是我收到一个语法错误,它并没有真正告诉我发生了什么。错误是:

Error Code: 1064. 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 'SET finalResult = candidate;

这是我用来创建该过程的代码。谁能告诉我我做错了什么?

delimiter //
CREATE PROCEDURE FindGCLDate(IN targetDate DATE)
BEGIN
DECLARE candidate DATE;
DECLARE finalResult DATE;
DECLARE loopComplete BOOLEAN;
DECLARE allDates CURSOR FOR SELECT * FROM gcl_dates;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopComplete = TRUE;

OPEN allDates;

myLoop : LOOP
FETCH allDates INTO candidate;
SELECT candidate;
IF targetDate < candidate
SET finalResult = candidate; -- this is the offending line
SET loopComplete = TRUE;
END IF;

IF loopComplete THEN
CLOSE allDates;
LEAVE myLoop;
END IF;
END LOOP myLoop;

SELECT finalResult;
END //

我知道该过程还有更多错误——我还没有定义输出参数或返回任何内容。但我只是想知道为什么我会收到此错误。

谢谢!

最佳答案

上面一行缺少 THEN:

IF targetDate < candidate

应该是

IF targetDate < candidate THEN

来自fine manualIF 语句的语法如下:

IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF

其中可选的内容像往常一样用括号标记; THEN 周围没有括号,因此这是必需的。

关于mysql - MySQL 存储过程中 SET 出现神秘语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480937/

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