2011-11-09 72 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 ;