Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — FUNDATEC 2025
- Código
- qa699058
- Banca
- FUNDATEC
- Órgão
- PROCERGS
- Ano
- 2025
- Cargo
- ANC ( )
- A123.45
- B123.450
- C00123.450
- DFM00123.450
- EApresenta erro de sintaxe
GabaritoC — 00123.450
Gabarito: letra C — a conta chega a 00123.450 — alternativa C.
A função TO_CHAR do Oracle converte um número em texto, permitindo controlar exatamente como ele aparece. O formato é uma máscara onde cada símbolo representa um dígito ou um separador: o '0' exige que aquele dígito exista, preenchendo com zero se faltar; o '9' deixa o dígito opcional, usando espaço se não houver. O ponto separa a parte inteira da decimal.
No formato '00000.000', temos cinco zeros antes do ponto e três depois. Isso significa que a parte inteira terá sempre cinco dígitos, completados com zeros à esquerda, e a parte decimal terá sempre três dígitos, completados com zeros à direita. O prefixo 'FM' (Fill Mode) remove espaços em branco que o Oracle adicionaria para alinhamento, deixando apenas os caracteres significativos.
Esta questão testa a interpretação do modelo de formatação: quantos zeros são obrigatórios e o efeito do 'FM'. O número 123.45 tem três dígitos inteiros e dois decimais, então o formato exige completar com zeros até atingir cinco e três, respectivamente.
V_NUMERO = 123.45 (NUMBER(5,2))
formato = 'FM00000.000'
O que queremos: a string resultante da conversão de V_NUMERO com o formato especificado
O formato '00000.000' define quantos dígitos cada parte deve ter. A parte inteira do número 123.45 é 123, que tem três dígitos, mas o formato exige cinco. Como o '0' é obrigatório, o Oracle preenche com zeros à esquerda até completar cinco dígitos.
Por que esta fórmula: Não há fórmula; é a regra do modelo de formatação: cada '0' representa um dígito obrigatório, preenchido com zero se ausente.
Achar que o número fica como está, sem zeros à esquerda, e marcar a alternativa B.
A parte decimal de 123.45 é 45, que tem dois dígitos, mas o formato exige três. Novamente, o '0' obriga a completar com um zero à direita.
Por que esta fórmula: Mesma regra do passo anterior: cada '0' após o ponto é um dígito decimal obrigatório.
Esquecer de adicionar o zero à direita e achar que a saída é '00123.45'.
Com as partes formatadas, a string seria '00123.450'. O prefixo 'FM' no início do formato instrui o Oracle a eliminar espaços em branco extras que normalmente apareceriam (por exemplo, um espaço à esquerda para números positivos). Como não há espaços aqui, a saída final é exatamente '00123.450'.
Por que esta fórmula: O 'FM' é um modificador de preenchimento, não um caractere literal; ele não aparece na saída.
Pensar que 'FM' é parte do texto e marcar a alternativa D.
Resposta: 00123.450 — alternativa C
Link permanente: /questoes/qa699058