Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2023

Banco de DadosSQL
Código
qg025998
Banca
Quadrix
Órgão
CREA-GO
Ano
2023
Nível
Superior
Cargo
Analista de Área - T.I

Imagem da questão

Com base no modelo de dados e no código SQL acima apresentados, julgue o item.A instrução SQL não será executada, pois há um erro de sintaxe na linha 4, já que a função NVL não pode ser utilizada com a função TRUNC.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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ções NVL e TRUNC no Oracle SQL

Gabarito: ERRADO (letra E). A afirmação está incorreta porque a função NVL pode sim ser utilizada com a função TRUNC no Oracle SQL — não há qualquer erro de sintaxe na linha 4 do comando. A combinação TRUNC(NVL(ec.nota, 0), 3) é perfeitamente válida: a função NVL substitui valores nulos por 0 e a função TRUNC trunca o resultado para 3 casas decimais. O erro apontado pela banca simplesmente não existe.

A questão cobra o conhecimento de funções de manipulação de dados no Oracle SQL, especificamente as funções NVL e TRUNC. A função NVL é uma função de tratamento de nulos que substitui um valor nulo por um valor alternativo especificado. Já a função TRUNC é uma função de arredondamento que trunca um número para um determinado número de casas decimais (ou para uma data, no caso de datas). Essas funções podem ser combinadas livremente em expressões SQL, pois a saída de uma função pode ser usada como entrada de outra. Não há nenhuma restrição de sintaxe que impeça o uso de NVL dentro de TRUNC.

Na prática, a expressão TRUNC(NVL(ec.nota, 0), 3) funciona da seguinte forma: primeiro, a função NVL verifica se o valor da coluna ec.nota é nulo; se for, substitui por 0; se não, mantém o valor original. Em seguida, a função TRUNC trunca o resultado para 3 casas decimais. Por exemplo, se ec.nota for NULL, o resultado será 0; se for 5.6789, o resultado será 5.678. Essa combinação é comum em consultas que precisam tratar valores nulos antes de aplicar operações numéricas, garantindo que o resultado final seja consistente e sem erros de cálculo.

A banca, ao afirmar que há um erro de sintaxe, tenta confundir o candidato que não domina a flexibilidade das funções SQL. A verdade é que funções podem ser aninhadas umas dentro das outras, desde que os tipos de dados sejam compatíveis. No caso, NVL retorna um número (ou o valor alternativo, que também é número) e TRUNC aceita um número como primeiro argumento. Portanto, a combinação é válida e a instrução SQL será executada normalmente, desde que o restante do comando esteja correto.

NÃO CAIA NESSA!

A banca tenta fazer o candidato acreditar que há uma restrição de sintaxe onde não existe. A pegadinha está em sugerir que NVL e TRUNC não podem ser usadas juntas, quando na verdade o aninhamento de funções é um recurso básico e amplamente utilizado no SQL. O candidato que conhece a sintaxe e a semântica das funções percebe imediatamente que a afirmação é falsa. Fique atento: a banca adora inventar restrições que não existem para testar se você realmente entende o funcionamento das funções.

  1. 1NVL substitui nulo por 0
  2. 2TRUNC trunca para 3 casas
  3. 3Expressão válida e executável
LEVEL · soulevel.com.br

Alternativa E — ✅ Correta (a afirmação é falsa, portanto ERRADO)

A alternativa E afirma que a instrução SQL não será executada devido a um erro de sintaxe na linha 4, porque a função NVL não pode ser utilizada com a função TRUNC. Isso é falso. A função NVL pode ser usada dentro de TRUNC sem qualquer problema de sintaxe. A combinação TRUNC(NVL(ec.nota, 0), 3) é válida e a instrução SQL será executada corretamente, desde que o restante do comando esteja correto. Portanto, a afirmação está errada, e a alternativa E é a correta.

Gabarito: letra E

Link permanente: /questoes/qg025998