Pular para o conteúdo principal

Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — FUNDATEC 2025

Banco de DadosPL/SQL e Outras Extensões SQL
Código
qa699058
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Cargo
ANC ( )
Qual é a saída apresentada após executar o seguinte trecho de código escrito em PL/SQL?   SET SERVEROUTPUT ON; DECLARE V_NUMERO NUMBER(5,2):= 123.45; V_STRING VARCHAR2(10); BEGIN V_STRING:= TO_CHAR(V_NUMERO, 'FM00000.000'); DBMS_OUTPUT.PUT_LINE(V_STRING); END;
  1. A123.45
  2. B123.450
  3. C00123.450
  4. DFM00123.450
  5. EApresenta erro de sintaxe
Revelar gabarito e comentário

GabaritoC — 00123.450

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”.

Resolução

Gabarito: letra C — a conta chega a 00123.450 — alternativa C.

A ideia por trás

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.

O que a questão dá

  • 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

Passo 1 — Aplicar o formato à parte inteira

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.

00123\boxed{00123}
NÃO CAIA NESSA!

Achar que o número fica como está, sem zeros à esquerda, e marcar a alternativa B.

Passo 2 — Aplicar o formato à parte decimal

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.

450\boxed{450}
NÃO CAIA NESSA!

Esquecer de adicionar o zero à direita e achar que a saída é '00123.45'.

Passo 3 — Juntar as partes e remover espaços com FM

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.

00123.450\boxed{00123.450}
NÃO CAIA NESSA!

Pensar que 'FM' é parte do texto e marcar a alternativa D.

Resposta: 00123.450 — alternativa C

Link permanente: /questoes/qa699058