【发布时间】:2021-06-02 20:50:34
【问题描述】:
根据 MySQL 8.0 deprecations notes,从 MySQL 9.0 开始,使用 DECLARE(例如 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 的方法替换它。
【问题讨论】:
标签: mysql deprecation-warning user-variables