O EXERCÍCIO MULTA
Por: nicolasnoronha • 18/6/2017 • Trabalho acadêmico • 1.036 Palavras (5 Páginas) • 656 Visualizações
Exercícios do Módulo I – PLpgSQL - Multas
Exercício 01: Neste primeiro exercício, iremos criar uma função em PlpgSQL, para que mediante os parâmetros enviados (CNH e Velocidade Apurada) se possa testar se um motorista deverá receber ou não Multa. O resultado é a inserção (caso tenha multa) de um novo registro na tabela de ex_multa.
Conforme as tabelas descritas abaixo, escreva um procedimento que atenda ao solicitado: –O procedimento deve receber dois valores por parâmetro CNH do motorista e velocidadeApurada do veículo por ele conduzido; –O procedimento, caso seja necessário deverá gravar um registro na tabela ex_multa, bem como retornar um texto com a seguinte mensagem: 'O motorista [nome] soma [X] pontos em multas ‘;
•O cálculo da pontuação do motorista é efetuado da seguinte forma: – Se a velocidade estiver entre 80.01 e 110 então o motorista deve ser multado em 120,00 e receber 20 pontos –Se a velocidade estiver entre 110.01 e 140 então o motorista deve ser multado em 350 e receber 40 pontos –Se a velocidade estiver acima de 140 então o motorista deve ser multado em 680 e receber 60 pontos •O sistema deve considerar somente 90% da velocidade apurada para o cálculo da multa. OBS1: Após o cálculo o sistema deve incluir a multa na tabela ex_multa (se o contribuinte foi multado)
Exercício 02: •Escreva um outro procedimento que atualize o campo totalMultas da tabela ex_motorista a partir dos totais apurados para cada motorista autuado na tabela ex_multa. •OBS1: motorista sem multa deverão possuir valor 0.00 no campo total multa; •OBS2:cuidado para não duplicar valores na coluna totalMultas para os casos em que a rotina for disparada mais de uma vez
RESPOSTA:
--Quastao A
create or replace function GeraMulta (pCNH char(5), velocidadeApurada decimal(5,2))
returns varchar(50) as $$
declare
_motorista record;
_VelCalc decimal(5,2) := 0.00;
_pontos integer := 0;
_multa decimal(5,2) := 0.00;
_TemMulta boolean;
begin
select * into _motorista from ex_motorista where cnh = pCNH;
_VelCalc := velocidadeApurada * 0.9;
_TemMulta := false;
if _VelCalc >= 80.01 and _VelCalc <= 110 then
_TemMulta := true;
_pontos := 20;
_multa := 120.00;
end if;
if _VelCalc >= 110.01 and _VelCalc <= 140 then
_TemMulta := true;
_pontos := 40;
_multa := 350.00;
end if;
if _VelCalc >= 140.01 then
_TemMulta := true;
_pontos := 60;
_multa := 680.00;
end if;
if _TemMulta then
insert into ex_multa
...