yueyecheshou1980 2019-08-05 10:03 采纳率: 50%
浏览 222

mysql phpmyadmin 数据库查询语句报错 想改下文章发布时间总是出错

我网站里面的文章用火车头采集发布上去的,因为几百篇文章不能一下子发不出去所以发布时间都是一个月以后的同一个时间,在火车头里不知道怎么把时间弄成递增的形式发布,所以就统一的改成了两个月以后的某个时间定时发布的,现在想在数据库里改成每天发布5篇文章,写了下面语句,先查询5条符合条件的要改的记录然后更新发布时间为当天,改完之后再查询5条改成当天加1天,之后再查询改成当天加2天以此类推,知道查出的条数小于5条停止,但是总是报错不知道哪里有问题
create procedure settime()
begin
DECLARE numb INT DEFAULT 5;
DECLARE numb2 INT DEFAULT 1;
while numb>4
begin
update article1 set adddate=replace(adddate ,'2019-09-23 10:00:00',DATE_ADD('2019-08-04 10:00:00',INTERVAL @numb2 DAY)) where (SELECT adddate FROM article1where adddate='2019-09-23 10:00:00'limit 0,5);
set @numb=FOUND_ROWS();
set @numb2=@numb2+1;
end;
end;
call settime();

#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 'begin update article1 set adddate=replace(adddate ,'2019-09-23 10:00:00',' at line 6

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:58
    关注

    根据你提供的信息,我发现你的语句中有一些语法错误。

    首先,你使用了一个不支持的标识符 '@numb'。在MySQL中,如果要使用自定义变量,应该使用 '@' 符号开头。因此,在while循环中你应该使用 '@numb' 而不是 'numb'。

    其次,你的语句中缺少一个 ';' 符号。在update语句末尾需要添加一个 ';'。

    下面是修改后的代码:

    DELIMITER $$
    create procedure settime()
    begin
    DECLARE @numb INT DEFAULT 5;
    DECLARE @numb2 INT DEFAULT 1;

    while @numb>4
    begin
    update article1 set adddate=replace(adddate ,'2019-09-23 10:00:00',DATE_ADD('2019-08-04 10:00:00',INTERVAL @numb2 DAY)) where (SELECT adddate FROM article1where adddate='2019-09-23 10:00:00'limit 0,5);
    set @numb=FOUND_ROWS();
    set @numb2=@numb2+1;
    end;

    end$$
    DELIMITER ;

    最后,你需要正确地调用存储过程。应该使用:

    CALL settime();

    希望这个修复了你的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建