繁体   English   中英

我在 MySql 存储过程中遇到语法错误 1064

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM