【问题标题】:Why does Loop Procedure in MYSQL return error?为什么MYSQL中的循环过程返回错误?
【发布时间】:2020-12-07 11:19:02
【问题描述】:

我对 SQL 比较陌生,只是在玩一些代码。这个想法是这个过程应该循环遍历 TABLE 电影并将 COLUMN 摘要中每一行的 SET 值设置为 NULL 但是它返回错误:

#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '@MaxValue INT; 附近使用的正确语法; 声明@Counter INT; SET @MaxValue = SELECT MAX(id) FROM ...' 在第 4 行

你能告诉我我做错了什么吗?

非常感谢!

DELIMITER //

CREATE PROCEDURE ReplaceSummary()

BEGIN 
    DECLARE @MaxValue INT;
    DECLARE @Counter INT;
    SET @MaxValue = SELECT MAX(id) FROM movies;
    SET @Counter = 1;
    WHILE @Counter <= @MaxValue DO
        UPDATE movies SET summary = NULL WHERE id = @Counter;
        SET @Counter = @Counter + 1;
    END WHILE;
END //

DELIMITER ;

【问题讨论】:

  • 1) 用户定义的变量(名称以@开头)不需要声明,不能声明。 2) 通过 SET 运算符将 SELECT 输出设置为变量需要整个 SELECT 用括号括起来。
  • 程序执行的操作可以通过简单的UPDATE movies SET summary = NULL;...
  • @Akina - 谢谢一百万!我进行了更改,现在效果很好:)

标签: mysql sql loops mariadb procedure


【解决方案1】:
UPDATE movies SET summary = NULL 

【讨论】:

  • 是的,我知道这可以通过简单的查询很容易地完成,我只是想了解循环在 SQL 中是如何工作的......
  • 搜索光标或使用此例如:stackoverflow.com/questions/4222868/…
猜你喜欢
  • 2021-12-17
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2013-02-04
  • 2014-07-13
相关资源
最近更新 更多