Ok, finished.
Code:
USE [GunzDB]
GO
/****** Object: StoredProcedure [dbo].[spWinTheClanGame] Script Date: 12/11/2007 14:40:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: Stored Procedure dbo.spWinTheClanGame Script Date: 5/10/2007 3:42:10 PM ******/
-- 클랜전 결과 업데이트
ALTER PROC [dbo].[spWinTheClanGame]
@WinnerCLID int,
@LoserCLID int,
@IsDrawGame tinyint,
@WinnerPoint int,
@LoserPoint int,
@WinnerClanName varchar(24),
@LoserClanName varchar(24),
@RoundWins tinyint,
@RoundLosses tinyint,
@MapID tinyint,
@GameType tinyint,
@WinnerMembers varchar(110),
@LoserMembers varchar(110)
AS
SET NOCOUNT ON -- 추가.
IF @IsDrawGame = 0
BEGIN
BEGIN TRAN
-- 이긴팀 Wins+1
UPDATE Clan SET Wins=Wins+1, Point=Point+@WinnerPoint, TotalPoint=TotalPoint+@WinnerPoint WHERE CLID=@WinnerCLID
IF 0 = @@ROWCOUNT BEGIN -- 여기 추가.
ROLLBACK TRAN
RETURN
END
-- 진팀 Losses+1
UPDATE Clan SET Losses=Losses+1, Point= dbo.fnGetMax(0, Point+(@LoserPoint)) WHERE CLID=@LoserCLID
IF 0 = @@ROWCOUNT BEGIN -- 여기 추가.
ROLLBACK TRAN
RETURN
END
-- UPDATE Clan SET Point=0 WHERE CLID=@LoserCLID AND Point<0
-- 전적 로그를 남긴다.
INSERT INTO ClanGameLog(WinnerCLID, LoserCLID, WinnerClanName, LoserClanName, RoundWins, RoundLosses, MapID, GameType, RegDate, WinnerMembers, LoserMembers, WinnerPoint, LoserPoint)
VALUES (@WinnerCLID, @LoserCLID, @WinnerClanName, @LoserClanName, @RoundWins, @RoundLosses, @MapID, @GameType, GETDATE(), @WinnerMembers, @LoserMembers, @WinnerPoint, @LoserPoint)
IF 0 <> @@ERROR BEGIN -- 여기 추가.
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
END
ELSE
BEGIN
UPDATE Clan SET Draws=Draws+1 WHERE CLID=@WinnerCLID OR CLID=@LoserCLID
END
Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fnGetMax]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fnGetMax]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
/****** Object: Function fnGetMax by tester001 Script Date: 12/11/2007 14:40:03 ******/
-- Function to return the highest of two numbers
CREATE function [dbo].[fnGetMax] (@num1 int, @num2 int)
returns int
as
begin
if @num1 > @num2
begin
return @num1
end
return @num2
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
How to use: Copy and paste that spWinTheClanGame in place of your old spWinTheClanGame, and Execute.
Right click at "GunzDB" and click "New Query". Paste fnGetMax, right click and click Execute.
Backup first, as always.