mysql游标使用定义变量报错1064,如何解决?

mysql游标使用中定义的变量报1064,不知道语句问题是啥?该怎么改正

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 'DECLARE @oa int' at line 2

begin
    DECLARE oa int;
        DECLARE na int;
    DECLARE done int;
        DECLARE cur CURSOR 
            for 
            select `登录账号` as oa,`姓名` as na from info_hr_rs where `是否参与比较`  = 1;
    /*游标内容执行完之后将done=1*/
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  open cur;
  posLoop:loop
    if done = 1 then
      leave posLoop;
    end if;
    fetch cur into oa, na
    update cnki_data set
      作者_替换 = replace(作者_替换, na, oa);
  end loop posLoop;
  close cur;
end

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在MySQL中,定义变量不需要在变量名前面添加“@”符号。所以您需要将DECLARE语句修改如下:

BEGIN
    DECLARE oa INT;
    DECLARE na INT;
    DECLARE done INT;
    DECLARE cur CURSOR FOR SELECT `登录账号` as oa, `姓名` as na FROM info_hr_rs WHERE `是否参与比较`  = 1;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN cur;
    posLoop:LOOP
        IF done = 1 THEN
            LEAVE posLoop;
        END IF;
        FETCH cur INTO oa, na;
        UPDATE cnki_data SET 作者_替换 = REPLACE(作者_替换, na, oa);
    END LOOP posLoop;
    CLOSE cur;
END


这样应该就可以成功执行了。

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^