USE [SHARD]GO/****** Object: StoredProcedure [dbo].[_STRG_DEL_ITEM_NoTX] Script Date: 10/11/2011 17:12:03 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO
ALTER procedure [dbo].[_STRG_DEL_ITEM_NoTX]@DelFromPC_Inv AS TINYINT,@CharID AS BIGINT, -- ¸şÁ÷ ş¥ºê Ãß°¡·Î ÀÎÇØ È®Àå@Slot AS TINYINT
as declare @Rvalue int declare @ItemToDel bigint if (@DelFromPC_Inv = 1) select @ItemToDel = ItemID FROM _Inventory WHERE CharID = @CharID AND Slot = @Slot else if ( @DelFromPC_Inv = 2 ) select @ItemToDel = ItemID FROM _InventoryForLinkedStorage WHERE LinkedItemID = @CharID AND Slot = @Slot else select @ItemToDel = ItemID FROM _InvCOS WHERE COSID = @CharID AND Slot = @Slot if (@ItemToDel IS NULL or @ItemToDel = 0) return -1
---------------------------------------- -- Á¹¶ó ÀÌ ¾Æ·¡ÂÊ ¼øÀüÈ÷ Æê ¼Òȯ¾ÆÀÌşÛ ¶§¹®¿¡ -- µé¾î°£ ÄÚµåÀÌ´Ù. ºĞ¸í overheadÀ̱ä ÇÏÁö¸¸ -- _STRG_DEL_ITEM ÀÇ ½ş·Úµµ¿Í °ÔÀÓ¼*¹ö ÄÚµå º¹Àâµµ -- Áõ°¡¸¦ À¯¹ßÇÏÁö ¾Ê±â À§ÇØ ¾î¿ ¼ö ¾ø´Â ÆÇ´ÜÀ̾ú´Ù. T_T ---------------------------------------- declare @BoundCOS int declare @RefItemID int select @RefItemID = RefItemID, @BoundCOS = Data from _Items where ID64 = @ItemToDel if (@@ROWCOUNT = 0) return -2
---------------------------------------- -- Ȥ½Ã ÀÌ´® PET ¼Òȯ¾ÆÀÌşÛÀΰ¡? ---------------------------------------- declare @TypeID1 tinyint declare @TypeID2 tinyint declare @TypeID3 tinyint select @TypeID1 = TypeID1, @TypeID2 = TypeID2, @TypeID3 = TypeID3 from _RefObjCommon where ID = @RefItemID if (@TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 1 ) begin ---------------------------------------- -- ¿«¿©ÀÖ´Â PET ÀÌ ÀÖÀ¸¸é ±×³Ñ »èÁ¦ ---------------------------------------- if (@BoundCOS <> 0) begin exec @Rvalue = _DeleteCharCOS_NoTX @BoundCOS if (@Rvalue < 0) return @Rvalue end end
---------------------------------------- -- Ȥ½Ã ÀÌ´® LinkedStorage¾ÆÀÌşÛÀΰ¡? ---------------------------------------- else if( @TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 3 ) begin ---------------------------------------- -- ¿«¿©ÀÖ´Â Storage ÀÖÀ¸¸é ±×³Ñ »èÁ¦ ---------------------------------------- if (@BoundCOS <> 0) begin IF( NOT EXISTS( select LinkedItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel ) ) BEGIN return -1000 END IF( EXISTS( select top 1 ItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel and ItemID <> 0 and ItemID IS NOT NULL ) ) BEGIN update _ItemPool Set InUse = 0 from _ItemPool as IP join _InventoryForLinkedStorage as IFLS on IP.ItemID = IFLS.ItemID where IFLS.LinkedItemID = @ItemToDel AND IFLS.ItemID <> 0 END DELETE FROM _InventoryForLinkedStorage where LinkedItemID = @ItemToDel IF( @@ERROR <> 0 ) BEGIN return -2 END end end
---------------------------------------------------------- -- ½½·Ô ºñ¿ì±â ---------------------------------------------------------- if (@DelFromPC_Inv = 1 ) update _Inventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot else if (@DelFromPC_Inv = 2 ) update _InventoryForLinkedStorage SET ItemID = 0 WHERE LinkedItemID = @CharID AND Slot = @Slot else update _InvCOS SET ItemID = 0 WHERE COSID = @CharID AND Slot = @Slot
if (@@error <> 0 OR @@rowcount = 0) return -3
---------------------------------------------------------- -- »èÁ¦ ´ë»ó ¾ÆÀÌşÛ¿¡ ¹*ÀÎ ÀÓ´ë Á¤º¸ »èÁ¦ ---------------------------------------------------------- if exists (select 1 from _RentItemInfo with (nolock) where nItemDBID = @ItemToDel) begin delete from _RentItemInfo where nItemDBID = @ItemToDel if (@@ERROR <> 0 OR @@ROWCOUNT = 0) begin rollback transaction return -6 end end
---------------------------------------------------------- -- ÇØ´ç ¾ÆÀÌşÛ »èÁ¦ ---------------------------------------------------------- exec @Rvalue = _STRG_FREE_ITEM_NoTX @ItemToDel if (@Rvalue < 0) return -4
return 1