我正在尝试创建一个存储过程,但是失败了,我不知道为什么?
要求:
delimiter //
drop procedure if exists sp_edit_booking_owner;
create procedure sp_edit_booking_owner(v_pnr varchar(32), v_login varchar(200))
begin
declare l_iduser int(11) default null;
SELECT id_user INTO l_iduser FROM users WHERE userlogin = v_login;
if l_iduser is not null then
update book set iduser_c = l_iduser where bookingref = v_pnr;
update seg s join book b on s.id_book = b.id_book set s.id_user = l_iduser where b.bookingref = v_pnr;
update segmentown so join seg s on s.id_seg = so.id_seg join book b on s.id_book = b.id_book set so.id_user = l_iduser where b.bookingref = v_pnr;
update historyb hb join seg s on s.id_seg = hb.id_seg join book b on s.id_book = b.idbooking join users u on u.iduser = s.id_user_m set hb.eventowner = u.username where b.bookingref = v_pnr and hb.event not like '%USER%';
update historyb hb join seg s on s.id_seg = hb.id_seg join book b on s.id_book = b.idbook join users u on u.id_user = s.id_user_m set hb.event = concat(u.username, '(USER)') where b.bookingpnr = v_pnr and hb.event like '%USER%';
end if;
end;
//
delimiter ;
这可能是一个合奏问题,但我不能从哪里知道...
有人有主意吗?
谢谢。
最佳答案
如果更改定界符,则需要使用它,直到再次更改它为止
delimiter //
drop procedure if exists sp_edit_booking_owner //
create procedure sp_edit_booking_owner(v_pnr varchar(32), v_login varchar(200))
...
修复此问题,我可以在使用的MySQL上创建它
关于mysql - MYSQL-创建程序的语法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8067071/