اخيرراااااااااا تم حل المشكله بس بطريقه غريبه جدا و انا مكنتش متخيل انها هاتتحل كده
بص اللى حصل انى لاحظن ان الكويرى ده
كود:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_TRAINING_CAMP_UPDATEHONORRANK] Script Date: 05/04/2013 03:10:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_TRAINING_CAMP_UPDATEHONORRANK]
AS
SET NOCOUNT ON
-- ÀÏ´Ü ·©Å· Å×À̺íÀ» ¼¼ÆÃÇÑ´Ù.
DECLARE @Ranking INT
SET @Ranking = 1
DECLARE @CampID INT
DECLARE @Rank TINYINT
BEGIN TRANSACTION
DECLARE RankCursor CURSOR FAST_FORWARD FOR
SELECT TOP 50 [ID] FROM _TrainingCamp WITH (NOLOCK)
WHERE EvaluationPoint >= 10
ORDER BY EvaluationPoint DESC, LatestEvaluationDate ASC
-- ÀÏ´Ü Àüü ·©Å·À» ¾øÀ½À¸·Î Ç¥½ÃÇÏÀÚ.
UPDATE _TrainingCamp SET Rank = 5 WHERE Rank <> 5
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
DEALLOCATE RankCursor
RETURN -1
END
-- ·©Å· Å×ÀÌºíµµ ÃʱâÈ*ÇÏÀÚ.
UPDATE _TrainingCampHonorRank SET CampID = null, Rank = null
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
DEALLOCATE RankCursor
RETURN -1
END
OPEN RankCursor
FETCH NEXT FROM RankCursor INTO @CampID
WHILE @@FETCH_STATUS = 0
BEGIN
IF @Ranking <= 5
BEGIN
SET @Rank = 1
END
ELSE IF @Ranking <= 15
BEGIN
SET @Rank = 2
END
ELSE IF @Ranking <= 30
BEGIN
SET @Rank = 3
END
ELSE
BEGIN
SET @Rank = 4
END
UPDATE _TrainingCamp SET Rank = @Rank WHERE [ID] = @CampID
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
ROLLBACK TRANSACTION
CLOSE RankCursor
DEALLOCATE RankCursor
RETURN -2
END
UPDATE _TrainingCampHonorRank SET CampID = @CampID, Rank = @Rank WHERE Ranking = @Ranking
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
ROLLBACK TRANSACTION
CLOSE RankCursor
DEALLOCATE RankCursor
RETURN -3
END
SET @Ranking = @Ranking + 1
FETCH NEXT FROM RankCursor INTO @CampID
END
CLOSE RankCursor
DEALLOCATE RankCursor
-- ¸¶Áö¸·À¸·Î °»½ÅÇÑ ³¯Â¥¸¦ Àû¾îº¸ÀÚ!!!
IF EXISTS (SELECT LastUpdateDate FROM _TrainingCampHonorRankUpdateDate)
BEGIN
UPDATE _TrainingCampHonorRankUpdateDate SET LastUpdateDate = GETDATE()
END
ELSE
BEGIN
INSERT INTO _TrainingCampHonorRankUpdateDate VALUES (GETDATE())
END
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
ROLLBACK TRANSACTION
RETURN -4
END
COMMIT TRANSACTION
SET NOCOUNT OFF
RETURN 1
مكتوب فيه
كود:
WHERE EvaluationPoint >= 10
روحت عامل زى اللى فى الصوره دى
و لاقيت ال Buff اشتغل لوحده و الحمد لله
ياريت لو قدرت توصل لحاجه قولى علشان انا عايز افهم ايه اللى حصل ده
و كمان فى ناس كتيير محتاجه الموضوع ده
شكرا على المساعده