在mysql中运行存储过程时出错
Posted
技术标签:
【中文标题】在mysql中运行存储过程时出错【英文标题】:error when running the stored procedure in mysql 【发布时间】:2016-04-22 15:19:51 【问题描述】:我正在尝试在mysql中执行一个存储过程,下面是命令:
create procedure insertIntoEMP (IN name1 VARCHAR (50),IN sal1 INT)
BEGIN
insert into student values (name1, sal1)
END;
但是我遇到了一个错误。我在 mysql 客户端中运行上述命令。请让我知道我哪里出错了。
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“END”附近使用的正确语法
【问题讨论】:
错误消息说您的程序根据需要还有一个“e”,但看起来很正确。也许在创建后删除第二个空格。 能否请您详细说明。或者让我知道语法是否有任何错误? 【参考方案1】:在insert
之后添加;
:
create procedure insertIntoEMP (IN name1 VARCHAR (50),IN sal1 INT)
BEGIN
insert into student(name, sal) values (name1, sal1) ;
END;
SqlFiddleDemo
将列列表添加到INSERT INTO tab(col_list) VALUES ...
是一种很好的做法。
您可能需要根据您的客户定义delimiter:
如果使用mysql客户端程序定义存储程序 包含分号字符,就会出现问题。 默认情况下,mysql 本身将分号识别为语句分隔符,因此您必须 临时重新定义分隔符,使mysql通过整个 将程序定义存储到服务器。
DELIMITER $$
create procedure insertIntoEMP (IN name1 VARCHAR (50),IN sal1 INT)
BEGIN
insert into student(name, sal) values (name1, sal1) ;
END$$
DELIMITER ;
【讨论】:
仍然有错误:创建过程 insertIntoEMP (IN name1 VARCHAR (50),IN sal1 INT) -> BEGIN -> 插入 student(name, sal) 值 (name1, sal1) ; ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 3 行 mysql> END; 的 '' 附近使用 @Pradeep 你加了DELIMITER
吗?
如何添加定界仪。
这正在工作。有兴趣知道它是如何解决的。请解释。我来自java开发背景。
@Pradeep 添加了解释以上是关于在mysql中运行存储过程时出错的主要内容,如果未能解决你的问题,请参考以下文章