Questão FC372889
Considere a função PL/SQL abaixo, criada no Oracle, em ambiente ideal. CREATE OR REPLACE FUNCTION obterDados( vSal IN colaborador.salario%TYPE, vAdicional IN colaborador.adicional%
Linguagem SQL
FCC · 2020
Considere a função PL/SQL abaixo, criada no Oracle, em ambiente ideal.
CREATE OR REPLACE FUNCTION obterDados(
vSal IN colaborador.salario%TYPE,
vAdicional IN colaborador.adicional%TYPE)
RETURN NUMBER IS
BEGIN
...I...
END obterDados;
/
O objetivo da função é retornar o salário anual calculado a partir do salário mensal e do adicional (extra) de um funcionário, utilizando a fórmula (salário do funcionário * 12) + (adicional recebido * salário * 12). Para que a função realize a operação desejada, a lacuna I acima deverá ser preenchida por:
- this.salario:= (vSal * 12) + (vAdicional * vSal * 12);
- RETURN (NVL(vSal,0) * 12 + (NVL(vAdicional,0) * NVL(vSal,0) * 12));
- salario:=(NVL(vSal,0) * 12 + (NVL(vAdicional,0) * NVL(vSal,0) * 12));
- RETURN (ROUNDTO(vSal,2) * 12 + (ROUNDTO(vAdicional,2) * ROUNDTO(vSal,2) * 12));
- RETURN (DECIMAL(vSal,2) * 12 + (DECIMAL(vAdicional,2) * DECIMAL(vSal,2) * 12));
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A alternativa apresenta a instrução correta para que a função entregue o resultado esperado: usar RETURN com tratamento de NULL por meio de NVL. A fórmula matemática desejada é \( (\text{salário} \times 12) + (\text{adicional} \times \text{salário} \times 12) \).
O uso de NVL(expr, 0) garante que, se vSal ou vAdicional forem NULL, sejam substituídos por zero, evitando erro ou resultado NULL na expressão aritmética.
Assim, a expressão retornada — RETURN (NVL(vSal,0) * 12 + (NVL(vAdicional,0) * NVL(vSal,0) * 12)); — avalia corretamente a fórmula mesmo com valores nulos, e devolve um NUMBER ao chamador da função.
Conteúdo do catálogo FC Concursos · Atualizado em