Quantcast
Channel: Update + Exec Procedure
Viewing all articles
Browse latest Browse all 39

Update + Exec Procedure

$
0
0

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;



Viewing all articles
Browse latest Browse all 39

Trending Articles