Mysql 创建插入过程语句不完整
Mysql Create Insert Procedure Statement incomplete
我正在尝试为我的数据库编写一个小日志程序。我用这个语句创建了一个过程:
create procedure prc_wirte_log (
in p_schema varchar(255),
in p_item varchar(255),
in p_message varchar(255)
)
begin
insert into weather.log (`schema`, item, message) values (p_schema, p_item, p_message);
end;
我收到错误 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7 0.063 sec
为什么? MySQL Workbench 表示插入查询后 Incomplet Statment: excepting ;
。
我能做什么?
多语句过程(假定存在 BEGIN...END 时)需要分隔符覆盖以防止它们包含的语句过早地终止过程定义。
通常,您需要执行以下操作:
DELIMITER //
CREATE PROCEDURE blah()
BEGIN
statements;
END//
DELIMITER ;
文档 here 上的第一个示例演示了这一点 (尽管该页面上的最后两个示例似乎重复了您的错误。
如果您使用的是 WorkBench 或类似工具,只需右键单击 StoredProcedures 并单击创建存储过程,该工具将创建如下所示的默认结构,您可以编写逻辑并点击应用。确保在最后一条语句的末尾使用分号(就在 END 之前)。
CREATE PROCEDURE `new_procedure` ()
BEGIN
select * from tasks;
END
我正在尝试为我的数据库编写一个小日志程序。我用这个语句创建了一个过程:
create procedure prc_wirte_log (
in p_schema varchar(255),
in p_item varchar(255),
in p_message varchar(255)
)
begin
insert into weather.log (`schema`, item, message) values (p_schema, p_item, p_message);
end;
我收到错误 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7 0.063 sec
为什么? MySQL Workbench 表示插入查询后 Incomplet Statment: excepting ;
。
我能做什么?
多语句过程(假定存在 BEGIN...END 时)需要分隔符覆盖以防止它们包含的语句过早地终止过程定义。
通常,您需要执行以下操作:
DELIMITER //
CREATE PROCEDURE blah()
BEGIN
statements;
END//
DELIMITER ;
文档 here 上的第一个示例演示了这一点 (尽管该页面上的最后两个示例似乎重复了您的错误。
如果您使用的是 WorkBench 或类似工具,只需右键单击 StoredProcedures 并单击创建存储过程,该工具将创建如下所示的默认结构,您可以编写逻辑并点击应用。确保在最后一条语句的末尾使用分号(就在 END 之前)。
CREATE PROCEDURE `new_procedure` ()
BEGIN
select * from tasks;
END