MySQL 限制中的变量

mil*_*cek 1 mysql

我想在 MySQL 限制中使用变量,但它无效。为什么?(如果我将变量更改为数字,就可以了。)

MySQL Error> #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 '@records-leaveErr; END IF; END IF; END' at line 9
Run Code Online (Sandbox Code Playgroud)

我的代码:

DELIMITER //
    CREATE PROCEDURE `deleteOldErrRecords`(backTime int(11), leaveErr int(11))
    BEGIN
      SELECT @records:=COUNT(*) FROM `sys_proc_err`;
      IF @records > leaveErr THEN
        SELECT @actRecords:=COUNT(*) FROM `sys_proc_err` WHERE `time` > (NOW()-backTime); 
        IF @actRecords > leaveErr THEN
          DELETE FROM `sys_proc_err` WHERE `time` < (NOW()-backTime);
        ELSE
          DELETE FROM `sys_proc_err` ORDER BY `id` ASC LIMIT @records-leaveErr;
        END IF;
      END IF;
    END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

Mar*_*c B 5

自 5.5.6+ 起仅支持将变量用于限制值。