Syntaxe incorrecte près du mot clé 'ELSE'

J'ai eu un problème avec else fonction.

Voici mon code

IF (Not Exists(SELECT * FROM Log_DB.dbo._LogJobSYS WHERE KillerJobID=@JKillerID AND DeadJobID=@CharID)) 
BEGIN
INSERT Log_DB.dbo._LogJobSYS(KillerJobID,DeadJobID,DeathTime)
VALUES (@JKillerID, @CharID, GETDATE())
BEGIN
BEGIN
IF (@JKillerJobType = 1) /*TRADER*/ 
BEGIN
IF (Not Exists(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobTradersys Where CharID=@JKillerID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobTradersys(CharID,TraderPoints,Kills,Deaths,LastKill,Date)
VALUES (@JKillerID, 1, 1, 0, @JDeadNick, GETDATE())
END
ELSE Begin
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobTradersys SET TraderPoints = TraderPoints +1, Kills = Kills +1, LastKill = @JDeadNick, Date = GETDATE() WHERE CharID = @JKillerID
END
END
END
ELSE 
IF (@JKillerJobType = 2) /*THIEF*/ 
BEGIN
IF (Not Exists(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobThiefsys Where CharID=@JKillerID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobThiefsys(CharID,ThiefPoints,Kills,Deaths,LastKill,Date)
VALUES (@JKillerID, 1, 1, 0, @JDeadNick, GETDATE())
END
ELSE Begin
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobThiefsys SET ThiefPoints = ThiefPoints +1, Kills = Kills +1, LastKill = @JDeadNick, Date = GETDATE() WHERE CharID = @JKillerID
END
END
ELSE 
IF (@JKillerJobType = 3) /*HUNTER*/ 
BEGIN
IF (Not Exists(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobHuntersys Where CharID=@JKillerID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobHuntersys(CharID,HunterPoints,Kills,Deaths,LastKill,Date)
VALUES (@JKillerID, 1, 1, 0, @JDeadNick, GETDATE())
END
ELSE Begin
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobHuntersys SET HunterPoints = HunterPoints +1, Kills = Kills +1, LastKill = @JDeadNick, Date = GETDATE() WHERE CharID = @JKillerID
END
END 
BEGIN
IF (@JDeadJobType = 1) /*TRADER*/ 
BEGIN
IF (NOT EXISTS(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobTradersys WHERE CharID=@CharID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobTradersys(CharID,TraderPoints,Kills,Deaths,LastKill,Date)
VALUES (@CharID, 0, 0, 1, 'NONE', GETDATE())
END
ELSE BEGIN
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobTradersys SET TraderPoints = TraderPoints -0.5, Deaths = Deaths +1, Date = GETDATE() WHERE CharID = @CharID
END
END
END 
ELSE  
IF (@JDeadJobType = 2) /*THIEF*/ 
BEGIN
IF (NOT EXISTS(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobThiefsys WHERE CharID=@CharID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobThiefsys(CharID,ThiefPoints,Kills,Deaths,LastKill,Date)
VALUES (@CharID, 0, 0, 1, 'NONE', GETDATE())
END
ELSE BEGIN
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobThiefsys SET ThiefPoints = ThiefPoints -0.5, Deaths = Deaths +1, Date = GETDATE() WHERE CharID = @CharID
END
END
ELSE 
IF (@JDeadJobType = 3) /*HUNTER*/ 
BEGIN
IF (NOT EXISTS(SELECT * FROM SRO_VT_SHARD_INIT.dbo._CharJobHuntersys WHERE CharID=@CharID))
BEGIN
INSERT SRO_VT_SHARD_INIT.dbo._CharJobHuntersys(CharID,HunterPoints,Kills,Deaths,LastKill,Date)
VALUES (@CharID, 0, 0, 1, 'NONE', GETDATE())
END
ELSE BEGIN
UPDATE SRO_VT_SHARD_INIT.dbo._CharJobHuntersys SET HunterPoints = HunterPoints -0.5, Deaths = Deaths +1, Date = GETDATE() WHERE CharID = @CharID
END
END
END
END 

J'obtiens ces erreurs:

Msg 156, Niveau 15, État 1, Procédure _AddLogChar, Ligne 155

Syntaxe incorrecte près du mot clé 'ELSE'.

Msg 156, Niveau 15, État 1, Procédure _AddLogChar, Ligne 194

Syntaxe incorrecte près du mot clé 'ELSE'.

Note de côté : c'est pour la première Else commande, mais la deuxième ne donne pas d'erreur (ceux qui sont avant SI (@JKillerJobType = 2) ET SI (@JDeadJobType = 2) !
merci !

il semble que vous avez deux "ELSE"s avant SI (@JDeadJobType = 2) et SI (@JDeadJobType = 3).

OriginalL'auteur Muhab | 2014-05-05