121 lines
2.7 KiB
Transact-SQL
121 lines
2.7 KiB
Transact-SQL
CREATE PROCEDURE [dbo].[up_mail_item_move]
|
|
@mail_id [uniqueidentifier],
|
|
|
|
@item_id01 [uniqueidentifier],
|
|
@page_01 int,
|
|
@slot_01 int,
|
|
@over_item_id01 [uniqueidentifier],
|
|
|
|
@item_id02 [uniqueidentifier],
|
|
@page_02 int,
|
|
@slot_02 int,
|
|
@over_item_id02 [uniqueidentifier],
|
|
|
|
@item_id03 [uniqueidentifier],
|
|
@page_03 int,
|
|
@slot_03 int,
|
|
@over_item_id03 [uniqueidentifier]
|
|
AS
|
|
SET NOCOUNT ON
|
|
|
|
declare @src_item_count int
|
|
, @mail_item_count int
|
|
, @charID [uniqueidentifier]
|
|
, @ERR INT
|
|
|
|
set @src_item_count = 0
|
|
set @mail_item_count = 0
|
|
|
|
|
|
BEGIN TRAN
|
|
|
|
UPDATE [dbo].[MailTable]
|
|
SET [gold] = 0
|
|
WHERE [ID] = @mail_id
|
|
SET @ERR = @@ERROR
|
|
IF @ERR <> 0
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
RETURN @ERR
|
|
END
|
|
|
|
|
|
--메일 아이템을 얻어 온다
|
|
select @mail_item_count = [use_cnt]
|
|
, @charID = [character_id]
|
|
from [dbo].[N_MailItem] with (READUNCOMMITTED)
|
|
where item_uid = @item_id01
|
|
IF @@ROWCOUNT > 0
|
|
BEGIN
|
|
|
|
--인벤토리 아이템이 있는지 검사
|
|
select @src_item_count = [use_cnt]
|
|
from [dbo].[N_InventoryItem] with (READUNCOMMITTED)
|
|
where item_uid = @over_item_id01
|
|
and character_id = @charID
|
|
and page_index = @page_01
|
|
and slot_index = @slot_01
|
|
|
|
exec dbo.up_mail_item_move_sub_sqlroad @item_id01, @over_item_id01, @mail_item_count, @src_item_count, @page_01, @slot_01
|
|
SET @ERR = @@ERROR
|
|
IF @ERR <> 0
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
RETURN @ERR
|
|
END
|
|
END
|
|
|
|
set @src_item_count = 0
|
|
set @mail_item_count = 0
|
|
|
|
select @mail_item_count = [use_cnt]
|
|
, @charID = [character_id]
|
|
from [dbo].[N_MailItem] with (READUNCOMMITTED)
|
|
where item_uid = @item_id02
|
|
IF @@ROWCOUNT > 0
|
|
BEGIN
|
|
--인벤토리 아이템이 있는지 검사
|
|
select @src_item_count = [use_cnt]
|
|
from [dbo].[N_InventoryItem] with (READUNCOMMITTED)
|
|
where item_uid = @over_item_id02
|
|
and character_id = @charID
|
|
and page_index = @page_02
|
|
and slot_index = @slot_02
|
|
|
|
exec dbo.up_mail_item_move_sub_sqlroad @item_id02, @over_item_id02, @mail_item_count, @src_item_count, @page_02, @slot_02
|
|
SET @ERR = @@ERROR
|
|
IF @@ERROR <> 0
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
RETURN @ERR
|
|
END
|
|
END
|
|
|
|
set @src_item_count = 0
|
|
set @mail_item_count = 0
|
|
|
|
select @mail_item_count = [use_cnt]
|
|
, @charID = [character_id]
|
|
from [dbo].[N_MailItem] with (READUNCOMMITTED)
|
|
where item_uid = @item_id03
|
|
IF @@ROWCOUNT > 0
|
|
BEGIN
|
|
--인벤토리 아이템이 있는지 검사
|
|
select @src_item_count = [use_cnt]
|
|
from [dbo].[N_InventoryItem] with (READUNCOMMITTED)
|
|
where item_uid = @over_item_id03
|
|
and character_id = @charID
|
|
and page_index = @page_03
|
|
and slot_index = @slot_03
|
|
|
|
exec dbo.up_mail_item_move_sub_sqlroad @item_id03, @over_item_id03, @mail_item_count, @src_item_count, @page_03, @slot_03
|
|
SET @ERR = @@ERROR
|
|
IF @@ERROR <> 0
|
|
BEGIN
|
|
ROLLBACK TRAN
|
|
RETURN @ERR
|
|
END
|
|
END
|
|
|
|
COMMIT TRAN
|
|
RETURN
|