Mysql创建插入过程语句不完整

Mar*_*kus 3 sql stored-procedures procedure mariadb

我正在尝试为我的数据库编写一些日志过程。我用以下语句创建一个过程:

 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;
Run Code Online (Sandbox Code Playgroud)

我得到错误 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 ;在插入查询之后。

我能做什么?

Uue*_*rdo 9

多语句过程(假定存在BEGIN ... END时)要求使用分隔符覆盖,以防止它们包含的语句过早地终止过程定义。

通常,您需要执行以下操作:

DELIMITER //

CREATE PROCEDURE blah()
BEGIN
   statements;
END//

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

此处文档的第一个示例说明了这一点(尽管该页面上的最后两个似乎重复了您的错误。

  • 谢谢。只需在顶部添加“DELIMITER //”语句就解决了我的问题。 (3认同)