【问题标题】:mysql stored procedure and functions syntax errorsmysql存储过程和函数语法错误
【发布时间】:2018-12-13 08:43:44
【问题描述】:

我在 mysql workbench 8.0.11 中工作,在创建存储过程和函数时遇到问题。为了清楚起见,我通过 mysql 工作台在 mysql 中运行它。我根本没有使用任何其他程序。

我正在尝试创建一个新的存储过程。我不断收到语法错误:“分隔符”在此位置没有有效输入,期待:CREATE。

我已经检查了 mysql 网站以确保我的语法正确并且匹配。另一件需要注意的是,我已经尝试使用会计来启动存储过程。 (我正在使用的数据库)并且我得到了同样的错误,除了“使用”代替了“分隔符”。所以,我不确定它与 delimiter 关键字本身有什么关系。 mysql 工作台中是否有一些设置可以让我解决这个问题?此外,我在尝试创建函数时遇到了完全相同的语法错误。

我尝试在不使用 delimiter 关键字或 use 关键字的情况下创建存储过程和函数,当我点击应用键时,mysql 崩溃。

这是我的代码:

delimiter $$
create procedure 'add_expense_category' (id int, name varchar(20))
begin
insert into expense_categories(expense_category_id, expense_category)
values(id, name);
end $$
delimiter ;

有人对如何解决这个问题有任何想法吗?要更改的设置?有什么事吗?

谢谢!

【问题讨论】:

  • 你在谷歌搜索错误信息时学到了什么?
  • 每个语句都必须终止,您的插入不是。请阅读dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html
  • 抱歉,我错过了插入语句末尾的分号。我在原始代码中确实有这个,只是错过了在这里添加它。但是,这不会改变错误。我继续收到相同的错误消息。
  • 我已经用谷歌搜索了很多问题,但没有找到与我的特定问题相关的任何内容。我发现的大多数看起来可能相关的问题最终都与使用 php 或其他程序的人有关。

标签: mysql syntax-error mysql-workbench mysql-error-1064


【解决方案1】:

试试这个

delimiter $$
create procedure `add_expense_category` (id int, name varchar(20))
begin
insert into expense_categories(expense_category_id, expense_category)
values(id, name);
end $$
delimiter ;

【讨论】:

  • 当我在问题中输入代码时,我错过了在插入语句中添加结束分号。但是,它包含在我的原始代码中。我也得到与分号相同的错误。当我将分隔符改回分号时,我也会得到它。
猜你喜欢
  • 2012-04-12
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
相关资源
最近更新 更多