MySQL 6.3 - 创建过程语法错误

标签 mysql sql-server stored-procedures mysql-workbench

我正在尝试创建存储过程但出现错误。存储过程如下所示

CREATE PROCEDURE addSection (IN sectionname varchar(50), IN sectiondetail varchar(50)) 
BEGIN 
INSERT INTO inquiry (sectionname,sectiondetail,entrytime) VALUES (sectionname,sectiondetail,now()); 
END// delimiter;

但是我收到如下错误

Error Code: 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 '' at line 3 0.00026 sec

我正在使用 MySQL Workbench 6.3

请帮忙...

最佳答案

首先运行以下命令并将分隔符切换为//:

delimiter //

然后运行稍作修改的代码(比较最后一行):

CREATE PROCEDURE addSection (IN sectionname varchar(50), IN sectiondetail varchar(50)) 
BEGIN 
    INSERT INTO inquiry (sectionname,sectiondetail,entrytime) VALUES (sectionname,sectiondetail,now()); 
END//

如果不切换分隔符,当客户端看到插入语句末尾的分号时,它会认为过程的定义提前结束 - 这就是语法错误的原因。

您可以随时将分隔符切换回 ;通过这样做:

delimiter ;

关于MySQL 6.3 - 创建过程语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35674109/

相关文章:

mysql - 如何在 View 中获取具有位格式的列?

MySQL 赋予行生命周期

sql - 如何将使用动态 SQL 的存储过程转换为非动态 SQL (SSRS)?

sql - 使用 T-SQL 将列动态转换为行

php - INSERT INTO table2 SELECT FROM table1 然后 UPDATE table1 所选/插入的行

database - 从 Oracle 11g 中给定的 url 下载文件并将其保存到 blob 类型列中的过程

mysql - 重复键更新时的 Node Mysql 仅更新唯一行

mysql - 在统计系统上,我应该保存有关多个表或仅一个表的单次访问的少量信息吗?

sql - 在一台 SQL Server 上拥有 1000 个 SQL 用户/登录名是否需要考虑性能问题?

mysql - 每 5 次插入更改一些值(MySQL 存储过程)