Buscar

APS material segundo semestre

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercícios: Sistemas de Banco de Dados II
Stored Procedure/Gerenciamento de Transações
1. (1,0 ponto) Faça uma Store Procedure para calcular o IMC ( Índice de Massa Corporal), conforme tabela abaixo. O cálculo do IMC é feito dividindo o peso (em quilogramas) pela altura (em metros) ao quadrado.
	Resultado
	Situação
	Abaixo de 17
	Muito abaixo do peso
	Entre 17 e 18,49
	Abaixo do peso
	Entre 18,5 e 24,99
	Peso normal
	Entre 25 e 29,99
	Acima do peso
	Entre 30 e 34,99
	Obesidade I
	Entre 35 e 39,99
	Obesidade II (severa)
	Acima de 40
	Obesidade III (mórbida)
EXEC stpIMC(150,1.87);
Resultado esperado: 
'Obesidade III (mórbida)', '42.895135691612566'
create proc [dbo].[stpIMC]
	@PESO float,
	@ALTURA float
as
begin
	declare @IMC float
	set @IMC = @PESO/@ALTURA
	if @IMC = 17
	begin 
		print 'Considerado muito abaixo do peso!'
	end
	if @IMC > 17 and @IMC < 18.49
	begin 
		print 'Considerado abaixo do peso!'
	end
	if @IMC > 18.5 and @IMC < 29.99
	begin 
		print 'Considerado acima do peso!'
	end
	if @IMC > 30 and @IMC < 34.99
	begin 
		print 'Está em obesidade I!'
	end
	if @IMC > 35 and @IMC < 39.99
	begin 
		print 'Está em obesidade II(Severa)!'
	end
	if @IMC > 40
	begin 
		print 'Está em Obesidade III(Mórbida)!'
	end
	
end
2. (1,0 ponto) Faça uma Store Procedure que some todos os números pares entre dois números. 
EXEC sptNumerosPares(0,100,@x out); 
select @x; 
Resultado esperado: 2550
create proc [dbo].[sptNumerosPares]
	@INICIO int,
	@FIM int
as
begin
	declare @SOMA int = 0
	
	while @INICIO <= @FIM
	begin
		if @INICIO%2 = 0
		begin
			set @SOMA = @SOMA + @INICIO
		end
		set @INICIO = @INICIO + 1
	end
	print @SOMA
end
3. (3,0 pontos) O DER abaixo foi criado para armazenar os dados de um sistema financeiro de um banco. Crie o banco de dados e faça as inserções, conforme orientações abaixo: 
A tabela TipoMovimento armazena os possíveis tipos de transações bancárias, a saber:
IdTipoMovimento	Descricao
1	Saque
2	Depósito
3	Transferência de
4	Transferência para
A tabela TipoConta armazena os tipos de conta:
IdTipoConta	Descricao
1	CC
2	Poupança
A tabela Conta armazena as contas dos clientes. Um Cliente pode ter várias contas.
A tabela Movimento armazena as transações ocorridas.
Ao fazer a transferência de uma conta para outra, devem ser inserido na tabela Movimento dois registros de movimentação da conta as duas operações, que devem ser consideradas, portanto, como uma única transação. Para utilizar esse recurso, devemos usar o recurso de transação explícita, utilizando os comandos BEGIN TRAN, COMMIT, ROLLBACK.
Faça uma Stored Procedure fazer efetuar uma transferência bancária, utilizando gerenciamento de transação e controle de erros BEGIN TRY...END TRY/BEGIN CATCH...END CATCH. A SP deve receber três parâmetros: IdConta de Origem e IdConta de Destino. Se alguma dessas contas não for encontrada, deve ser retornada a mensagem de erro (conta de origem/destino inexistente). Qualquer outra mensagem de erro também devem ser informada.
create proc [dbo].[createTransition]
	@VALOR float,
	@IDCONTA int,
	@TIPOTF char(100)
as
begin
	begin try
		begin transaction
			if(NOT EXISTS (select *from dbo.Conta where IdConta = @IDCONTA))
			begin
				;throw 51110 ,'A conta de destino ou origem não existe!!,1
			end
			if @TIPOTF != 'Saque' and @TIPOTF != 'Depósito' and @TIPOTF != 'Uma transferência de: ' and @TIPOTF != 'Uma transferência para: '
			begin
				;throw 51001,'Tipo de transacao disponivel, Saque, Depósito, Transferência de e Transferência para',1
			end
			if @TIPOTF = 'Saque'
			begin
				insert into 
					dbo.Movimento (IdTipoMovimento,DataHora,Valor,IdConta)
				values
					(1,SYSDATETIME(),@VALOR,@IDCONTA)
			end
			if @TIPOTF = 'Depósito'
			begin
				insert into 
					dbo.Movimento (IdTipoMovimento,DataHora,Valor,IdConta)
				values
					(2,SYSDATETIME(),@VALOR,@IDCONTA)
			end
			if @TIPOTF = 'Uma transferência de:'
			begin
				insert into 
					dbo.Movimento (IdTipoMovimento,DataHora,Valor,IdConta)
				values
					(3,SYSDATETIME(),@VALOR,@IDCONTA)
			end
			if @TIPOTF = 'Uma transferência para:'
			begin
				insert into 
					dbo.Movimento (IdTipoMovimento,DataHora,Valor,IdConta)
				values
					(4,SYSDATETIME(),@VALOR,@IDCONTA)
			end
		commit
	end try
	begin catch
		declare @MESSAGE varchar(max) = concat('Error:',error_message(),' ',error_number())
		print @MESSAGE
		if @@TRANCOUNT > 0
		begin
			rollback
		end
		;throw
	end catch
end

Continue navegando