FC ConcursosFC Concursos

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:

  1. this.salario:= (vSal * 12) + (vAdicional * vSal * 12);
  2. RETURN (NVL(vSal,0) * 12 + (NVL(vAdicional,0) * NVL(vSal,0) * 12));
  3. salario:=(NVL(vSal,0) * 12 + (NVL(vAdicional,0) * NVL(vSal,0) * 12));
  4. RETURN (ROUNDTO(vSal,2) * 12 + (ROUNDTO(vAdicional,2) * ROUNDTO(vSal,2) * 12));
  5. 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

Continue aprendendo