【问题标题】:Error with MySQL, DECLAREMySQL 出错,声明
【发布时间】:2023-03-28 01:11:01
【问题描述】:

我正在使用 MySQL v5.0.92 并尝试导入一些数据,但在声明变量时出现错误。

BEGIN
  DECLARE flag INT;
  DECLARE id INT;


while flag=0 begin
  SET id=(SELECT top 1 user_id 
         FROM ac_user_info WHERE user_id>@id order by user_id)

  INSERT INTO cuddleew_database1.cewp_usermeta(user_id,meta_key,meta_value)
  SELECT id,'first_name',first_name 
  FROM cuddleew_backup.ac_user_info WHERE user_id=@id

  INSERT INTO cuddleew_database1.cewp_usermeta(user_id,meta_key,meta_value)
  SELECT id,'last_name',last_name 
  FROM cuddleew_backup.ac_user_info WHERE user_id=@id

  SET flag=(select case @id when(SELECT MAX(user_id) 
                                FROM cuddleew_bakup.ac_user_info) then 1
     else 0
     END CASE)
  END WHILE
END

在 MySQL 控制台中我得到这个:

BEGIN DECLARE flag INT;

#1064 - 您的 SQL 语法有错误;检查与您对应的手册 MySQL 服务器版本,用于在第 2 行的“DECLARE flag INT”附近使用正确的语法。

你能帮我解决这个问题并告诉我有什么问题吗?提前致谢。

【问题讨论】:

  • 你需要更改分隔符

标签: mysql mysql-error-1064 declare


【解决方案1】:

你必须先改变你的分隔符,所以 ;不会告诉 MySQL 这个命令已经结束。

DELIMITER $$

[your code here]

END $$

DELIMITER ;

【讨论】:

  • 我添加了DELIMITER $$ [我的代码] END $$ DELIMITER;我得到一个更大的错误。我的 phpMyAdmin 有分隔符选项,它设置为“;”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多