【问题标题】:Unable to CREATE FUNCTION in MYSQL ERROR 1064 (42000)无法在 MYSQL 错误 1064 (42000) 中创建函数
【发布时间】:2012-11-14 18:04:29
【问题描述】:

您好,我正在使用 MySQL 创建函数:

CREATE FUNCTION INSERTGROUP(name VARCHAR(50))
RETURNS INT
NOT DETERMINISTIC
BEGIN
DECLARE 'idGroup' INT;

IF (NOT EXISTS (SELECT groupID FROM groupsTable WHERE groupName = 'name'))
THEN INSERT INTO groupsTable (groupName) VALUES ('name');

SELECT groupID INTO 'idGroup' FROM groupsTable WHERE groupName='name';

RETURN 'idGroup';
END//

但是当我尝试创建它时出现此错误:

ERROR 1064 (42000): 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
''idGroup' INT;

IF (NOT EXISTS (SELECT groupID FROM serverGroupsTable WHERE gro' at line 5

我已经通过论坛和其他类似的问题,但我不能让它创建功能。

我做错了什么?语法是否正确?我需要添加其他内容吗?

好的,这就是我尝试过的:

CREATE FUNCTION INSERTGROUP(name VARCHAR(255))
RETURNS INT
NOT DETERMINISTIC
BEGIN
DECLARE idGroup INT;

IF (NOT EXISTS (SELECT groupID FROM groupsTable WHERE groupName = name))
THEN INSERT INTO groupsTable (groupName) VALUES (name);

SELECT groupID INTO idGroup FROM groupsTable WHERE groupName=name;

RETURN idGroup;
END//

CREATE FUNCTION INSERTGROUP(name VARCHAR(255))
RETURNS INT
NOT DETERMINISTIC
BEGIN
DECLARE idGroup INT;

IF (NOT EXISTS (SELECT groupID FROM groupsTable WHERE groupName = 'name'))
THEN INSERT INTO groupsTable (groupName) VALUES ('name');

SELECT groupID INTO idGroup FROM groupsTable WHERE groupName='name';

RETURN idGroup;
END//

最后两个我得到了这个错误:

ERROR 1064 (42000): 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 13

和上面那个类似

我也使用DELIMITER // 将其从; 更改

【问题讨论】:

  • 使用您实施的修复程序更新您的示例,但仍然无法正常工作。

标签: mysql function


【解决方案1】:

从声明中删除引号

DECLARE idGroup INT;

你忘记了函数开头的分隔符更改

delimiter //
CREATE FUNCTION INSERTGROUP(name VARCHAR(255))

你忘了结束你的if声明

end if;

无论你想在哪里结束

【讨论】:

  • 我曾经有过这样的经历,但没有引号时出现了这个错误:ERROR 1064 (42000): 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 13 我也看到了这个stackoverflow.com/questions/3406822/…
  • 应该将它们从围绕该变量和name 的任何地方删除...
  • 你需要结束你的 if 语句。 end if;
  • 我正在使用 DELIMITER 更改,但你是对的,我错过了 END IF 谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2018-01-26
  • 2011-12-06
  • 2013-12-22
  • 1970-01-01
  • 2019-05-03
相关资源
最近更新 更多