| nesrelshark |
06-05-2013 04:12 PM |
اولا انا كونت عايز اعرف انتا شغال بى DB ايه مش مهم
================================
اول حاجه خوش على shard وى روح على Programmability
افتح stored procedures
دور على _DeleteCharPermanently_NoTX
عرف هتفتحو ازاى هتلاقى كلام زاى ده شيلو وى حوط ده
وان شاء الله هتتحل انا كان عندى نفس المشكله وى حلتها
كود PHP:
USE [New_VT_SHARD2] GO /****** Object: StoredProcedure [dbo].[_DeleteCharPermanently_NoTX] Script Date: 05/06/2013 14:54:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
ALTER PROCEDURE [dbo].[_DeleteCharPermanently_NoTX] @UserJID int, @CharID int as ------------------------------------ -- Inventory¶û ±×¾E?? °???°? A?´? ¾?A??Uµé ³¯·?¹?¸®A?... ------------------------------------ -------------- ?ê ¼?E¯ ¾?A??U?I?? AI´U »è?¦ ---------------- declare @result int declare @Slot tinyint declare @RefItemID int declare pc_inv_cursor cursor fast_forward for select inv.slot from _Inventory as inv join _Items as it on inv.ItemID = it.ID64 where (inv.CharID = @CharID and inv.Slot >= 13 and inv.ItemID > 0) and -- A????¢ ?¦?UCI°? ¾?A??U A?´A ¼?¼? AI?¥??¸® ¾E?? µé¾îA?A¸¸ç (it.Data <> 0) and -- ¼?E¯¼?¸¦ °???°? A?´A (exists (select top 1 ID from _RefObjCommon where ID = it.RefItemID and TypeID1 = 3 and TypeID2 = 2)) -- ?ê¼?E¯ ¾?A??Uµé ?£¾??à~ open pc_inv_cursor fetch next from pc_inv_cursor into @slot while @@fetch_status = 0 begin exec @result = _STRG_DEL_ITEM_NoTX 1, @CharID, @Slot if (@result < 0) begin close pc_inv_cursor deallocate pc_inv_cursor return @result end fetch next from pc_inv_cursor into @Slot end close pc_inv_cursor deallocate pc_inv_cursor ------------------- ³²A? ¾?A??Uµé ¸ù?¢ »è?¦ ------------------- -- ¾?A??UA? CI³?¶?µµ A?´U¸é... if (exists (select top 1 itemID from _Inventory where CharID = @CharID AND ItemID <> 0)) begin update _ItemPool Set InUse = 0 from _ItemPool as pool join _Inventory as inv on pool.ItemID = Inv.ItemID where Inv.CharID = @CharID and Inv.ItemID <> 0 end ----------- ¾?A??Uµé ³¯·EA¸´I ???¾AûA¸·ç AI?¥??¸® »è?¦ ------------ delete from _Inventory where CharID = @CharID if (@@error <> 0) begin return -10001 end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- APPLY_AVATAR_SYSTEM (C?½A??) --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
------------------- ³²A? ¾?¹U?¸ AI?¥??¸® ¾?A??Uµé ¸ù?¢ »è?¦ ------------------- -- ¾?A??UA? CI³?¶?µµ A?´U¸é... if (exists (select top 1 itemID from _InventoryForAvatar where CharID = @CharID AND ItemID <> 0)) begin update _ItemPool Set InUse = 0 from _ItemPool as pool join _InventoryForAvatar as InvAva on pool.ItemID = InvAva.ItemID where InvAva.CharID = @CharID and InvAva.ItemID <> 0 end ----------- ¾?A??Uµé ³¯·EA¸´I ???¾AûA¸·ç ¾?¹U?¸ AI?¥??¸® »è?¦ ------------ delete from _InventoryForAvatar where CharID = @CharID if (@@error <> 0) begin return -10008 end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- APPLY_AVATAR_SYSTEM (C?½A??) --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
------------------------------------ -- COS »è?¦ ------------------------------------ /* declare @engaged_cos int set @engaged_cos = 0 select @engaged_cos = EngagedCOS from _char with (nolock) where CharID = @CharID if (@engaged_cos = 0) begin -- ?? ¹?»?CI´A ?? A? ¸?¸£°???¸¸... ¾??? µ?¹°°O COS ¸¸ ³²¾?A?´A °???°? A?´?¶?°?... -_-; select @engaged_cos = ID from _CharCOS with (nolock) where OwnerCharID = @CharID if (@engaged_cos is null) set @engaged_cos = 0 end if (@engaged_cos is not null and @engaged_cos <> 0) begin declare @Return_Del_COS int exec @Return_Del_COS = _DeleteCharCOS_NoTX @CharID, @engaged_cos if (@Return_Del_COS < 0) begin return -10002 end end */ ------------------------------------ -- Trijob µ¥A??? »è?¦ ------------------------------------ delete from _CharTrijob where CharID = @CharID ------------------------------------ -- ½??³ »è?¦ ------------------------------------ delete _CharSkill where CharId = @CharID delete _CharSkillMastery where charId = @CharID ------------------------------------ -- ?ù½??® »è?¦ ------------------------------------ delete _CharQuest where CharID = @CharID ------------------------------------ -- ±?µ? ¸â¹? »è?¦ ------------------------------------ -- !!! ¸¸¾à ?©±â¼* Guild ¸â¹? »è?¦°? AI¾î³??? ¾EA¸¸é ShardManager ??¼* -- _Guild_DelMember E£?âC? ??µµ·I ¼??¤C?¾? C?´U! ??±?A? ±× °??¤A? SkipCI°? -- ¸?¸?¸®??¼* »è?¦¸¸ AI¾î³?°O µC¾î A?°?µ¢... declare @GuildID int set @GuildID = 0 select @GuildID = GuildID from _char where charid = @CharID if (@GuildID is not null and @GuildID <> 0) begin if (not exists (select ID from _Guild where ID = @GuildID)) begin update _Char set GuildID = 0 where CharID = @CharID end else begin declare @Return_Del_GuildMember int exec @Return_Del_GuildMember = _Guild_DelMember_NoTX @GuildID, @CharID if (@Return_Del_GuildMember < 0) return -10003 end end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- APPLY_MENTOR_SYSTEM (??AIE£) --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ DECLARE @CampID INT SET @CampID = 0 SELECT @CampID = CampID FROM _TrainingCampMember WHERE CharID = @CharID IF (@CampID IS NOT NULL AND @CampID <> 0) BEGIN DECLARE @Ret_DelCampMember INT EXEC @Ret_DelCampMember = _TRAINING_CAMP_DELMEMBER @CampID, @CharID, 0 IF (@Ret_DelCampMember < 0) RETURN -10007 END
-- A?A¸¸é ????¹?¸®A?~ ¹¹. DELETE FROM _TrainingCampSubMentorHonorPoint WHERE CharID = @CharID
-- °?Cè?? ¹?C? ·¹??µ?µµ~~ ¤»¤» DELETE FROM _TrainingCampBuffStatus WHERE CampID = @CampID
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -- APPLY_MENTOR_SYSTEM (??AIE£) --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
----------------------------------- -- ?£±¸ ¸®½??® »è?¦ ( ³?AC ?£±¸ ¸®½??® + ?£±¸AC ?£±¸ ¸®½??®?? ³? ) ----------------------------------- -- ³» ?£±¸µé.. declare @FriendCharID int declare @cursor_var cursor set @cursor_var = cursor fast_forward for select FriendCharID from _Friend where CharID = @CharID open @cursor_var fetch next from @cursor_var into @FriendCharID while( @@FETCH_STATUS = 0 ) begin delete _Friend where CharID = @FriendCharID and FriendCharID = @CharID fetch next from @cursor_var into @FriendCharID end close @cursor_var deallocate @cursor_var -- ³?.. delete _Friend where CharID = @CharID ----------------------------------- -- AE?? »è?¦ ----------------------------------- delete _Memo where CharID = @CharID ------------------------------------ -- TimedJob »è?¦CI±â ------------------------------------ delete _TimedJob where CharID = @CharID ------------------------------------ -- Static Avatar ?¤?¸ »è?¦ ------------------------------------ delete from _staticavatar where charid = @charid ------------------------------------ -- ±?¸» ??·° ?¤?¸ »è?¦ ------------------------------------ -- Hyperdash 2009. 9. 3 C?Aç´A ?×A???A? ¾?¾î ?³¸¯?? »è?¦°? µC?? ¾EA½, ??E? UI °³¼± 1A÷ ????°? µE °?????´A ??¼® C??¦ CE delete from _BlockedWhisperers where OwnerID = @charid ------------------------------------ -- _DeletedChar Entry »è?¦ ------------------------------------ delete from _DeletedChar where CharID = @CharID if (@@error <> 0) begin return -10004 end -- start by novice. DELETE FROM _User WHERE UserJID = @UserJID and CharID = @CharID -- finish by novice.
------------------------------------ -- commit !!! ------------------------------------ -- ?¬¶?A?¾??®?ë ?ü½½·O ?¤?¸ A?A? ?×A??? ³¯¸®±â!!! exec _RemoveClientConfig @CharID -- by novice...... for saving client configurations... return @GuildID
|