2011-11-09 22 views
0

我想创建一个存储过程,但它失败了,我不知道为什么? 请求:MYSQL - 创建过程的语法?

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 ; 

这可能是一个synthax的问题​​,但我不能从那里...... 有人有想法告诉?

谢谢。

回答

0

谢谢您的答复。事实上,我的第一次请求没有错。

你只需要通过终端执行这个请求(mysql在命令行中)。

再次感谢。

4

如果你改变你的需要,直到你再次更改

delimiter // 
drop procedure if exists sp_edit_booking_owner // 
create procedure sp_edit_booking_owner(v_pnr varchar(32), v_login varchar(200)) 
... 

解决这个问题,我可以在MySQL的创建它使用它的分隔符我使用

1

使用此代码:

其作品;)

 

delimiter // 
drop procedure if exists sp_edit_booking_owner// 
create procedure sp_edit_booking_owner(IN v_pnr varchar(32),IN 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 ;