0

こんにちは、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//

最後の2つについては、次のエラーが発生しました。

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 //それをから変更します;

4

1 に答える 1

4

宣言から引用符を削除します

DECLARE idGroup INT;

関数の開始時に区切り文字の変更を忘れた

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

そして、あなたはあなたのif声明を終わらせるのを忘れました

end if;

終わりたい場所ならどこでも

于 2012-11-14T18:05:18.143 に答える