我正在尝试使用以下stored_procedure
代码创建一个sql
:
INSERT INTO users (name,surname,email,phone,address_id)
VALUES (name,surname,email,phone,address_id);
SET @GeneratedUserID = LAST_INSERT_ID();
INSERT INTO user_login (username,password_salt,hash_code,users_user_id)
VALUES (username,password_salt,hash_code,@GeneratedUserID );
INSERT INTO user_roles (user_id,role_id)
VALUES (@GeneratedUserID ,1);
但是,我遇到一个错误:
MySQL said: #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 'SET @GeneratedUserID = LAST_INSERT_ID(); INSERT INTO user_login (username,pas' at line 4
答案 0 :(得分:2)
您很可能没有更改定界符,但是不能确定,因为您没有发布整个代码(请始终这样做)。因此,MySQL认为该过程在第一个;
之后完成。
您的过程应如下所示:
delimiter $$
create procedure x(in p_param1 int, in p_param2 int)
begin
statement1;
statement2;
end$$
delimiter ;
还请注意,您应该选择与列名不同的参数名。最佳做法是使用诸如p_
之类的前缀。变量相同。使用诸如v_
之类的前缀。