2014-04-27 66 views
0

我遇到此錯誤: 錯誤代碼:1064.您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法在第19行在MYSQL中創建函數錯誤

DELIMITER $$ 
CREATE FUNCTION cadastrar_usuario(email VARCHAR(100), senha VARCHAR(30), nome VARCHAR(100), sobrenome VARCHAR(100)) RETURNS INT 
BEGIN 
DECLARE ID INT; 
DECLARE EXISTE_EMAIL INT; 

IF (email = '') || (senha = '') || (nome = '') || (sobrenome = '') THEN 
    RETURN 1; 

SELECT LAST_INSERT_ID() INTO ID; 

SELECT COUNT(CODUSUARIO) FROM USUARIO_EMAIL WHERE EMAIL = email INTO EXISTE_EMAIL; 
IF EXISTE_EMAIL > 0 THEN 
    RETURN 2; 

INSERT INTO USUARIO VALUES(0, senha, nome, sobrenome); 
INSERT INTO USUARIO_EMAIL VALUES(ID, email, NULL); 

RETURN 0; 
    **END$$** This is the line 19 

    DELIMITER ; 

我不知道用「」附近的手冊,是什麼問題。

已經表示感謝。

+0

嘗試使用空格END $$。 –

+0

沒有工作,和相同的錯誤。 –

+0

你忘了END IF。 – LSerni

回答

1

你忘了關閉IF塊:

DROP FUNCTION IF EXISTS cadastrar_usuario; 

DELIMITER $$ 
CREATE FUNCTION cadastrar_usuario(email VARCHAR(100), senha VARCHAR(30), 
    nome VARCHAR(100), sobrenome VARCHAR(100)) RETURNS INT 
BEGIN 
DECLARE ID INT; 
DECLARE EXISTE_EMAIL INT; 

IF (email = '') || (senha = '') || (nome = '') || (sobrenome = '') THEN 
    RETURN 1; 
END IF; 

SELECT LAST_INSERT_ID() INTO ID; 

SELECT COUNT(CODUSUARIO) FROM USUARIO_EMAIL WHERE EMAIL = email INTO EXISTE_EMAIL; 

IF EXISTE_EMAIL > 0 THEN 
    RETURN 2; 
END IF; 

INSERT INTO USUARIO VALUES(0, senha, nome, sobrenome); 
INSERT INTO USUARIO_EMAIL VALUES(ID, email, NULL); 

RETURN 0; 

END 

$$ 

DELIMITER ; 

(經過測試,在MySQL 5.6.12社區工作)。

+0

它工作。 謝謝你。 –

+0

你應該將答案標記爲已批准,然後(而不需要upvoting)。 – LSerni