Analista Legislativo - Desenvolvedor de Banco de Dados
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 ISBEGIN..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:
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Função PL/SQL para cálculo de salário anual
Gabarito: letra B. A função obterDados deve retornar o valor do salário anual conforme a fórmula (salário * 12) + (adicional * salário * 12). A alternativa B é a única que combina corretamente o uso da função NVL para tratar valores nulos e a instrução RETURN obrigatória em funções PL/SQL.
A questão exige conhecimento de sintaxe PL/SQL: toda função deve conter pelo menos um comando RETURN, e é boa prática tratar possíveis valores NULL nos parâmetros para evitar resultados nulos inesperados. A banca explora esses dois pontos com distratores que ou omitem o RETURN ou usam funções inexistentes.
Alternativa A — ❌ Incorreta
O comando this.salario:=... não é válido em PL/SQL. Não existe a palavra-chave this nesse contexto, e a função não possui um comando RETURN, o que é obrigatório para que a função devolva um valor.
Alternativa B — ✅ Correta ⟵ GABARITO
A expressão usa NVL para converter NULL em zero, evitando que o resultado seja NULL. A fórmula está correta: (vSal * 12) + (vAdicional * vSal * 12). O comando RETURN está presente, retornando o número calculado.
Alternativa C — ❌ Incorreta
Atribui o resultado a uma variável salario que não foi declarada e, principalmente, não possui RETURN. Sem o comando RETURN, a função não retorna nenhum valor, o que é inválido.
Alternativa D — ❌ Incorreta
A função ROUNDTO não existe no Oracle PL/SQL. A função correta para arredondamento é ROUND. Portanto, a tentativa de usar ROUNDTO causa erro de compilação.
Alternativa E — ❌ Incorreta
DECIMAL é um tipo de dados, não uma função de conversão. Para converter ou formatar números usa-se TO_NUMBER, CAST, ou funções de arredondamento. O uso de DECIMAL como função invalida a expressão.
PEGA ESSA DICA!
Em PL/SQL, lembre-se sempre de:
Incluir a instrução RETURN em funções.
Utilizar NVL(expressão, valor_substituto) para evitar que valores NULL se propaguem.
Conhecer as funções built-in reais: ROUND, TRUNC, TO_NUMBER, NVL, NVL2, etc.