Установка параметра в хранимой процедуре вызывает ошибку - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать 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

1 Ответ

0 голосов
/ 12 октября 2018

Скорее всего, вы не изменили разделитель, но не можете сказать наверняка, потому что вы не опубликовали весь код (пожалуйста, всегда делайте это).Поэтому MySQL считает, что процедура завершается после первого ;.

Ваша процедура должна выглядеть следующим образом:

delimiter $$
create procedure x(in p_param1 int, in p_param2 int)
begin
    statement1;
    statement2;
end$$
delimiter ;

Также обратите внимание, что вы должны выбирать имена параметров, которые не являютсятак же, как имена столбцов.Рекомендуется использовать префикс, например p_.То же самое для переменных.Используйте префикс, например v_ или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...