MySQL:错误代码:1064。创建过程时

MySQL: Error Code: 1064. when create procedure

我找不到解决问题的方法, 这是我的代码:

DELIMITER //
CREATE procedure SP_INS_fbUSER
    (v_email varchar(50), v_password varchar(20), v_first_name Nvarchar(20),
    v_last_name Nvarchar(20), v_full_name Nvarchar(50), v_profile_pic_arr text)
BEGIN 
    IF(exists(SELECT * FROM USER WHERE email = v_email)) then
        BEGIN
            INSERT INTO USER 
            (email,password,first_name,last_name,full_name,active,profile_pic_arr) 
            VALUES 
            (v_email,v_password,v_first_name,v_last_name,v_full_name,TRUE,v_profile_pic_arr);
    END IF;
end;
DELIMITER ; 

这是错误消息:

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 10

第 10 行有什么问题以及如何解决?

我试过这个代码:

DELIMITER //
CREATE procedure SP_INS_fbUSER
    (v_email varchar(50), v_password varchar(20), v_first_name Nvarchar(20),
    v_last_name Nvarchar(20), v_full_name Nvarchar(50), v_profile_pic_arr text)
BEGIN 
    IF(exists(SELECT * FROM USER WHERE email = v_email)) then
        BEGIN
            INSERT INTO USER 
            (email,password,first_name,last_name,full_name,active,profile_pic_arr) 
            VALUES 
            (v_email,v_password,v_first_name,v_last_name,v_full_name,TRUE,v_profile_pic_arr);
        END
--------^
    END IF;
end;
DELIMITER ;

但是还是报同样的错误。 然后我试试这个代码:

DELIMITER //

CREATE procedure SP_INS_fbUSER
    (v_email varchar(50), v_password varchar(20), v_first_name Nvarchar(20),
    v_last_name Nvarchar(20), v_full_name Nvarchar(50), v_profile_pic_arr text)
BEGIN 
    IF(exists(SELECT * FROM `USER` WHERE `email` = v_email)) then
        BEGIN
            INSERT INTO `USER` 
            (`email`,`password`,`first_name`,`last_name`,`full_name`,`active`,`profile_pic_arr`) 
            VALUES 
            (v_email,v_password,v_first_name,v_last_name,v_full_name,TRUE,v_profile_pic_arr);
        END
    END IF;
END//

DELIMITER ;

它显​​示:

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 'END IF; END' at line 12

有人能帮帮我吗?

您的 BEGIN 没有 END:

DELIMITER //
CREATE procedure SP_INS_fbUSER
    (v_email varchar(50), v_password varchar(20), v_first_name Nvarchar(20),
    v_last_name Nvarchar(20), v_full_name Nvarchar(50), v_profile_pic_arr text)
BEGIN 
    IF(exists(SELECT * FROM USER WHERE email = v_email)) then
        BEGIN
            INSERT INTO USER 
            (email,password,first_name,last_name,full_name,active,profile_pic_arr) 
            VALUES 
            (v_email,v_password,v_first_name,v_last_name,v_full_name,TRUE,v_profile_pic_arr);
        END
--------^
    END IF;
end//
DELIMITER ; 

试试这个:

DELIMITER //

CREATE procedure SP_INS_fbUSER
    (v_email varchar(50), v_password varchar(20), v_first_name Nvarchar(20),
    v_last_name Nvarchar(20), v_full_name Nvarchar(50), v_profile_pic_arr text)
BEGIN 
    IF (EXISTS(SELECT * FROM `USER` WHERE `email` = v_email)) THEN
       INSERT INTO `USER` 
            (`email`,`password`,`first_name`,`last_name`,`full_name`,`active`,`profile_pic_arr`) 
          VALUES 
            (v_email,v_password,v_first_name,v_last_name,v_full_name,TRUE,v_profile_pic_arr);
    END IF;
END //

DELIMITER ;