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
这样应该就可以成功执行了。