Сохраненная процедура не работает для вставки данных - PullRequest
0 голосов
/ 06 мая 2020

У меня есть эта таблица:

User

user_id int PK
username varchar(20)
secret_code varchar(20)
name varchar(20)
age int
gender varchar(20)
city varchar(20)
latest_signin_time timestamp
latest_signout_time timestamp
loc_list json
buddy_list json

Я создал хранимую процедуру:

create procedure insert_users(IN user_id int , in username varchar(20),in secret_code varchar(20), 
                   in name varchar(20), in age int, in gender varchar(20), in city varchar(20), 
                   in latest_signin_time timestamp, in latest_signout_time timestamp, 
                   in loc_list json , in buddy_list json)
begin

insert into user values(user_id, username, secret_code, name, age, gender, city, 
                        latest_signin_time, latest_signout_time, loc_list,buddy_list)
end ;


call insert_user(​'1', 'avs431','pwd1','Ameya','22','Male','Mumbai',null,null,'[]','[]'​​);

Однако мой код не выполняется, и я продолжаю получать «Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать, какой синтаксис следует использовать рядом с 'end' в строке 9 "

Я не уверен, что здесь идет не так. Кто-нибудь может помочь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Команды в процедуре заканчиваются точкой с запятой (;). Используйте префиксы в параметрах процедуры, чтобы параметры не путались с именами столбцов. Кроме того, укажите имена столбцов в INSERT, чтобы ваша процедура работала, даже если столбец добавлен в таблицу.

delimiter //
create procedure insert_users(
in_user_id int, 
in_username varchar(20),
in_secret_code varchar(20), 
in_name varchar(20), 
in_age int, 
in_gender varchar(20), 
in_city varchar(20), 
in_latest_signin_time timestamp, 
in_latest_signout_time timestamp, 
in_loc_list json, 
in_buddy_list json
)
begin

insert into user (user_id, username, secret_code, name, age, gender, 
       city, latest_signtime, latest_signout_time, loc_list, buddy_list)
values(in_user_id, in_username, in_secret_code, in_name, in_age, in_gender, 
       in_city, in_latest_signin_time, in_latest_signout_time, in_loc_list, in_buddy_list);

end
//
delimiter ;

call insert_user(​'1', 'avs431','pwd1','Ameya','22','Male','Mumbai',null,null,'[]','[]'​​);
0 голосов
/ 06 мая 2020
create procedure insert_users(IN user_id int , in username varchar(20),in secret_code varchar(20), 
                   in name varchar(20), in age int, in gender varchar(20), in city varchar(20), 
                   in latest_signin_time timestamp, in latest_signout_time timestamp, 
                   in loc_list json , in buddy_list json)
/* begin */

insert into user values(user_id, username, secret_code, name, age, gender, city, 
                        latest_signin_time, latest_signout_time, loc_list,buddy_list)
/* end */ ;
...