【发布时间】:2011-11-20 04:43:40
【问题描述】:
我想在 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
我的代码:
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 ;
【问题讨论】:
-
如果您没有 MySQL 5.5.6+,您可以在stackoverflow.com/questions/245180/… 中找到许多解决方法。
标签: mysql