使用idea、MySQL创建存储过程报错

在idea中使用数据库MySQL8.0版本报错“ERROR 1064 (42000) at line 3 in file: 'C:\Users\86191\AppData\Local\Temp\DBN-16741746345414122312.sql': 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 '' at line 13”
代码如下:

CREATE PROCEDURE p_adduser(
  IN dlm varchar(20), 
  IN yhm varchar(20), 
  IN mm varchar(11), 
  IN xb char(1), 
  IN sfzh char(18), 
  IN sjh char(11), 
  IN dzyx varchar(20), 
  IN lxh char(1)
)
BEGIN
  INSERT INTO tbluser(loginName, userName, upassword, sex, identityCode, mobile, email, utype)
  VALUES (dlm, yhm, mm, xb, sfzh, sjh, dzyx, lxh);
end;

请问该怎么修改呢

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

根据错误信息,看起来是在第13行出现了语法错误,然而您提供的代码只有12行,因此可能是代码截断导致的错误。不过我还是可以根据您提供的代码,针对可能的问题给出一些修改建议。

首先,MySQL 存储过程的语法需要使用 DELIMITER 命令来重新定义语句分隔符,否则在执行多条语句时可能会出现语法错误。因此,您可以尝试在代码开头添加以下语句:

DELIMITER $$

然后,在存储过程的 END 语句之后,也需要使用 DELIMITER 重新定义语句分隔符,例如:

END $$
DELIMITER ;

最终的代码应该类似于以下内容:

DELIMITER $$
CREATE PROCEDURE p_adduser(
  IN dlm varchar(20), 
  IN yhm varchar(20), 
  IN mm varchar(11), 
  IN xb char(1), 
  IN sfzh char(18), 
  IN sjh char(11), 
  IN dzyx varchar(20), 
  IN lxh char(1)
)
BEGIN
  INSERT INTO tbluser(loginName, userName, upassword, sex, identityCode, mobile, email, utype)
  VALUES (dlm, yhm, mm, xb, sfzh, sjh, dzyx, lxh);
END $$
DELIMITER ;

请注意,每个语句后面都需要使用分号作为结束符,而在存储过程中,语句分号和存储过程 END 语句的分隔符是不同的。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢