yurinkamisato 2023-06-06 19:11 采纳率: 80%
浏览 18
已结题

使用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;

请问该怎么修改呢

  • 写回答

1条回答 默认 最新

  • Leodong. 2023-06-06 19:46
    关注

    该回答通过自己思路及引用到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 语句的分隔符是不同的。


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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 创建了问题 6月6日