根据 MySQL 8.0 deprecations notesDECLARE
,从 MySQL 9.0 开始,使用(eg )定义的用户变量DECLARE studentID INT
将被弃用:
SET
在 MySQL 8.0.13 中不推荐使用的语句中设置用户变量的支持。此功能可能会在 MySQL 9.0 中删除。
现在 MySQL 8.0.25 已经发出警告:
1287 在表达式中设置用户变量已被弃用,并将在未来的版本中删除。考虑替代方案:
SET variable=expression, ...
或SELECT expression(s) INTO variables(s)
。
因此,我想了解如何正确替换DECLARE
为SET
. 假设,我声明了以下变量:
DECLARE cursor_studentID INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cursor_i CURSOR FOR SELECT courseID FROM tblCoursesToCopy;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
现在我想让这些声明与 MySQL 9.0 兼容。如果DECLARE cursor_studentID INT;
一切都比较明显:
DECLARE cursor_studentID INT; → SET @cursor_studentID;
真正的障碍是最后一种情况:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
我不明白如何用SET
基于 - 的方法替换它。