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 ; 

関連する問題