2012-11-14 49 views
0

嗨,我是使用MySQL創建一個函數:無法創建函數MySQL錯誤1064(42000)

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 //將其從;

+0

更新你的例子與你實現的修復,仍然無法正常工作。 –

回答

4

改變從聲明

DECLARE idGroup INT; 

刪除引號,你忘了在功能

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

開始定界符變化,你忘了結束您if聲明

end if; 

無論你想要它結束

+1

我已經習慣了這樣做,我得到了這個沒有引號的錯誤: '錯誤1064(42000):你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第13行的 '附近使用正確的語法。 另外我看到這個 http://stackoverflow.com/questions/3406822/errors-with-mysql-stored -function-creation-error-1064-1327 –

+1

應該將它們從它們圍繞該變量和'name'的任何地方移除... – Buggabill

+0

是的,我試過 –