[英]Im encountering syntax error 1064 on my MySql stored procedure
嗨改写我之前的问题,我在下面添加了完整的声明。代码应该保留过去 7 天的数据。谢谢。
创建过程logs_user_aht_delete
( IN logs_database VARCHAR(25) CHARACTER SET utf,
IN logs_data_retention_db INT(10) )
开始
SET @v = concat('DELETE FROM ',logs_database,'
user_aht
ua WHERE IFNULL(ua.completed_at, ua.inserted_at) < (CURRENT_DATE - 7)- INTERVAL ',logs_data_retention_db,' DAY);');
从@v准备stm;
执行 stm;
DEALLOCATE PREPARE stm;
结束$$
要调试此 select @v 在过程中注释掉准备、执行、解除分配并检查结果。
有两件事在语法上不正确 1) 表别名是多表删除的一部分 2) 您将要删除的天数作为参数提供,并在 @v 的构建中对其进行硬编码
我建议你改成
SET @v = concat('DELETE ua FROM ',logs_database,'.user_aht ua
WHERE IFNULL(ua.completed_at, ua.inserted_at) < (CURRENT_DATE - INTERVAL ',logs_data_retention_db ,' DAY);');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.