Reputation: 21
I'm having this error: Error Code: 1064. 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 19
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 ;
I Have no idea, what is the problem.
Thanks already.
Upvotes: 0
Views: 82
Reputation: 57453
You forgot to close your IF
blocks:
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 ;
( Tested and working on MySQL 5.6.12-community ).
Upvotes: 1