我找不到如何解决我的问题, 这是我的代码:
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 ;
以下是错误消息:
错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第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 ;
它显示:
错误代码:1064。您的SQL语法出错;
检查与您的MySQL服务器版本对应的手册,以便在'END IF附近使用正确的语法; 结束'第12行
有人可以帮助我吗?
答案 0 :(得分:0)
END
:
BEGIN
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 ;
答案 1 :(得分:0)
试试这个:
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 ;