Voltei, gostaria da opinião de vocês de como ficou o código e se eu ainda posso melhorar em algo, graças a ajuda de vocês eu fiz varias alteraçoes com dicas e códigos que vocês me passaram!
USE [Server01] GO /****** Object: StoredProcedure [dbo].[SP_Cabal_WarHero_Table] Script Date: 14/12/2019 16:14:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[SP_Cabal_WarHero_Table] ( @CharacterIdx INT ) AS BEGIN /****** Declaraçoes Do Character_Table******/ DECLARE @CH_EPOINT INT, @CH_NAME varchar(16) SELECT @CH_EPOINT = Epoint, @CH_NAME = Name FROM cabal_character_table WHERE CharacterIdx = @CharacterIdx IF @@ROWCOUNT = 0 BEGIN SELECT -1 COMMIT TRAN RETURN END /****** Declaraçoes Do Cabal_HeroRank_table******/ DECLARE @HPOINT INT, @Last_Reward INT, @Patente VARCHAR(50) SELECT @HPOINT = HPoint, @Last_Reward = Last_Reward, @Patente = patente FROM Cabal_HeroRank_Table WHERE CharacterIdx = @CharacterIdx IF @@ROWCOUNT = 0 BEGIN SELECT -1 COMMIT TRAN RETURN END /****** Declaração Para Puxar as infos(IDS) Dos Titulos ******/ DECLARE @Cabo INT = 11034, @TerceiroSargento INT = 11035, @SegundoSargento INT = 11036, @PrimeiroSargento INT = 11037, @SegundoTenente INT = 11038, @PrimeiroTenente INT = 11039, @Capitao INT = 11040, @Major INT = 11041, @TenenteCoronel INT = 11042, @Coronel INT = 11043, @GeneralDebrigada INT = 11044, @GeneralDeDivisao INT = 11045, @GeneralDeExercito INT = 11046, @Marechal INT = 11047, @HeroiDeGuerra INT = 11048, @LendaDeGuerra INT = 11049 /****** Declaração para Setar novas Patentes ******/ DECLARE @Next varchar(50), @N_TerceiroSargento varchar(50) = ('TerceiroSargento'), @N_SegundoSargento varchar(50) = ('SegundoSargento'), @N_PrimeiroSargento varchar(50) = ('PrimeiroSargento'), @N_SegundoTenente varchar(50) = ('SegundoTenente'), @N_PrimeiroTenente varchar(50) = ('PrimeiroTenente'), @N_Capitao varchar(50) = ('Capitao'), @N_Major varchar(50) = ('Major'), @N_TenenteCoronel varchar(50) = ('TenenteCoronel'), @N_Coronel varchar(50) = ('Coronel'), @N_GeneralDeBrigada varchar(50) = ('GeneralDebrigada'), @N_GeneralDeDivisao varchar(50) = ('generalDeDivisao'), @N_GeneralDeExercito varchar(50) = ('GeneralDeExercito'), @N_Marechal varchar(50) = ('Marechal'), @N_HeroiDeGuerra varchar(50) = ('HeroiDeGuerra'), @N_LendaDeGuerra varchar(50) = ('LendaDeGuerra'), @N_NoMoreReward varchar(50) = ('NoMoreReward') /****** Declaração Para Enviar Email ******/ DECLARE @ItemIdx INT, @ItemOption INT, @Duration INT /****** Declaração Rank Recompensa ******/ DECLARE @Faixa INT, @Recom BIT, @Titulo varbinary(1024), @MsgEmail varchar(200); SET @Faixa = (@HPOINT / 1000 * 1000); SET @Recom = 'false'; END /****** Inicio da adição dos Titulos ******/ IF (@Faixa = 4000) and (@Faixa > @last_reward) AND (@Patente='Cabo') BEGIN SET @Titulo= (dbo.Int2Bin(@Cabo) + 0x0000); SET @MsgEmail='Medalha de Honra [Cabo]'; SET @Next = @N_TerceiroSargento; SET @Recom= 'true'; END ELSE IF (@Faixa = 11000) and (@Faixa > @last_reward) AND (@Patente='TerceiroSargento') BEGIN SET @Titulo= (dbo.Int2Bin(@TerceiroSargento) + 0x0000); SET @MsgEmail='Medalha de Honra [Terceiro-Sargento]'; SET @Next = @N_SegundoSargento; SET @Recom= 'true'; END ELSE IF (@Faixa = 24000) and (@Faixa > @last_reward) AND (@Patente='SegundoSargento') BEGIN SET @Titulo= (dbo.Int2Bin(@SegundoSargento) + 0x0000); SET @MsgEmail='Medalha de Honra [Segundo-Sargento]'; SET @Next = @N_PrimeiroSargento; SET @Recom= 'true'; END ELSE IF (@Faixa = 41000) and (@Faixa > @last_reward) AND (@Patente='PrimeiroSargento') BEGIN SET @Titulo= (dbo.Int2Bin(@PrimeiroSargento) + 0x0000); SET @MsgEmail='Medalha de Honra [Primeiro-Sargento]'; SET @Next = @N_SegundoTenente; SET @Recom= 'true'; END; -- se houve preparação de recompensa, atualiza banco de dados IF @Recom = 'true' BEGIN BEGIN TRANSACTION; -- adiciona o título UPDATE cabal_achievement_title SET TitleData = TitleData + @Titulo WHERE CharacterIdx = @CharacterIdx; -- EMAIL SET @ItemIdx=0 SET @ItemOption=0 SET @Duration=0 EXEC Server01.dbo.cabal_sp_mail_send_GM @CharacterIdx, @MsgEmail, ' Parabéns você acaba de ser Graduado. Aproveite a recompensa da sua Graduação!', @ItemIdx, @ItemOption, @Duration, 0 -- Alz -- atualiza o herorank UPDATE Cabal_HeroRank_Table SET Last_Reward = @Faixa, Patente = @Next WHERE characteridx= @CharacterIdx; COMMIT; END;