Questão nº 34

Questão de Informática · FCC TRT6 2018 (nº 34)

FCC2018Analista Judiciário – Área Apoio Especializado – Especialidade Tecnologia da InformaçãoInformática
Gabarito: Cver comentário ↓

Considere a existência de uma tabela chamada `Funcionario` que possui diversos campos, dentre eles o campo nome, que aceita cadeia de caracteres, e o campo comissao, que aceita números reais. No Oracle, para exibir o nome de todos os funcionários e suas respectivas comissões, de forma que se o funcionário não receber comissão apareça 'Sem comissão', utiliza-se a instrução SQL

Resposta comentada

Gabarito Alternativa C

Em bancos de dados, `NULL` significa "valor desconhecido" ou "não aplicável", e não é o mesmo que zero ou uma string vazia. Para exibir um texto personalizado quando um campo tem valor `NULL`, o Oracle usa a função `NVL`.

(A) Incorreta: `VRF` não é uma função SQL padrão do Oracle para tratar valores nulos, e a sintaxe `(comissao,null)` está incorreta.
(B) Incorreta: Embora `NVL` seja a função correta para tratar `NULL` no Oracle, a sintaxe `(comissao,null)` está incorreta. A função `NVL` espera dois argumentos: `NVL(expressao1, expressao2)`. Além disso, a principal armadilha aqui é que `NVL` exige que `expressao1` e `expressao2` tenham tipos de dados compatíveis. Se `comissao` é um número (`NUMBER`) e `'Sem comissão'` é uma string (`VARCHAR2`), o Oracle tentaria converter `'Sem comissão'` para número, o que falharia, ou `comissao` para string, mas a regra de precedência de tipos para `NVL` é que o tipo de retorno é o tipo do primeiro argumento, a menos que o segundo argumento seja de um tipo de dados de maior precedência. Para garantir compatibilidade, é preciso converter explicitamente.
(C) Correta: Esta é a instrução correta. A função `TO_CHAR(comissao)` converte o valor numérico da comissão para uma cadeia de caracteres. Se `comissao` for `NULL`, `TO_CHAR(NULL)` também resulta em `NULL`. Em seguida, a função `NVL(TO_CHAR(comissao), 'Sem comissão')` verifica se o resultado de `TO_CHAR(comissao)` é `NULL`. Se for, ela exibe `'Sem comissão'`. Se não for `NULL`, ela exibe o valor da comissão já convertido para string, garantindo que o tipo de dado de retorno seja sempre uma string, compatível com `'Sem comissão'`.
(D) Incorreta: `ISNULL` é uma função usada em outros sistemas de gerenciamento de banco de dados (como SQL Server), mas não no Oracle. No Oracle, a função equivalente é `NVL`.
(E) Incorreta: `GET` não é uma função SQL padrão do Oracle para tratar valores nulos, e a sintaxe `(comissao,null)` está incorreta.

Fonte: FCC TRT6 2018 Analista Judiciário – Área Apoio Especializado – Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho