在存储过程中设置参数会引发错误

zf2sa74q  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我想创造一个 stored_procedure 使用以下 sql 代码:

  1. INSERT INTO users (name,surname,email,phone,address_id)
  2. VALUES (name,surname,email,phone,address_id);
  3. SET @GeneratedUserID = LAST_INSERT_ID();
  4. INSERT INTO user_login (username,password_salt,hash_code,users_user_id)
  5. VALUES (username,password_salt,hash_code,@GeneratedUserID );
  6. INSERT INTO user_roles (user_id,role_id)
  7. VALUES (@GeneratedUserID ,1);

但是,我得到一个错误:

  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
20jt8wwn

20jt8wwn1#

您很可能没有更改分隔符,但无法确定,因为您没有发布整个代码(请始终这样做)。因此mysql认为,程序在第一个 ; .
您的程序应如下所示:

  1. delimiter $$
  2. create procedure x(in p_param1 int, in p_param2 int)
  3. begin
  4. statement1;
  5. statement2;
  6. end$$
  7. delimiter ;

还要注意,您应该选择与列名不同的参数名。最佳做法是使用前缀,如 p_ . 变量也一样。使用前缀,如 v_ 或者别的什么。

相关问题