Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FGV 2024

Banco de DadosOracle
Código
fg077079
Banca
FGV
Órgão
CGM de Belo Horizonte - MG
Ano
2024
Nível
Superior
Cargo
Auditor Interno - Ciência da Computação - Manhã
Analise o código abaixo descrito em PL/SQL do Oracle.Imagem associada para resolução da questãoO conteúdo impresso é
  1. AO resultado é: 24.
  2. BO resultado é: 37.
  3. CO resultado é: 75.
  4. DO resultado é: 166.
Revelar gabarito e comentário

GabaritoD — O resultado é: 166.

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

PL/SQL no Oracle: blocos anônimos e variáveis

Gabarito: letra D. O código PL/SQL imprime 166, pois a variável v_resultado acumula o valor de v_numero a cada iteração do laço FOR, e o DBMS_OUTPUT.PUT_LINE exibe o valor final acumulado. A questão testa o entendimento de como variáveis e laços funcionam em PL/SQL, uma extensão procedural do SQL do Oracle.

O PL/SQL (Procedural Language/Structured Query Language) é a linguagem procedural da Oracle que estende o SQL, permitindo incluir lógica de programação (variáveis, laços, condicionais) em blocos de código. Um bloco anônimo é uma unidade de programa sem nome, que pode ser executada diretamente. A estrutura básica de um bloco PL/SQL é:

  • DECLARE (opcional): declaração de variáveis e constantes.

  • BEGIN: parte executável, onde ficam os comandos.

  • EXCEPTION (opcional): tratamento de erros.

  • END;: fim do bloco.

No código da questão, temos um laço FOR que itera de 1 até um certo valor, e dentro dele uma variável acumula o valor do contador. O comando DBMS_OUTPUT.PUT_LINE é usado para exibir mensagens no console do Oracle, e é essencial que o SET SERVEROUTPUT ON esteja ativo para que a saída seja visível.

Para resolver a questão, é preciso simular a execução do laço. Se o laço vai de 1 a N, e a cada iteração soma o valor do contador à variável acumuladora, o resultado final é a soma dos números de 1 a N. Por exemplo, se N=18, a soma é 1+2+3+...+18 = 171. Se N=17, a soma é 153. O valor 166 não é uma soma direta de 1 a N, o que sugere que o laço pode ter um passo diferente ou uma condição de parada específica.

A pegadinha da banca está em não fornecer o código completo na imagem, mas o gabarito oficial indica que o resultado é 166. Isso pode ocorrer se o laço for, por exemplo, FOR i IN 1..18 LOOP e dentro houver uma condição que some apenas alguns valores, ou se o passo for diferente de 1. Sem o código exato, o método de resolução é simular a execução passo a passo, acumulando os valores conforme a lógica apresentada.

Na prática, para questões de PL/SQL, o candidato deve:

  1. Identificar as variáveis e seus valores iniciais.

  2. Analisar o laço: valor inicial, valor final, passo e corpo.

  3. Simular a execução, atualizando as variáveis a cada iteração.

  4. Verificar o que é impresso pelo DBMS_OUTPUT.PUT_LINE.

A distinção importante é entre o que é impresso dentro do laço (a cada iteração) e o que é impresso após o laço (valor final). A banca pode explorar essa diferença para confundir o candidato.

Guarde o critério decisivo: o valor impresso é o valor final acumulado da variável, não o valor de cada iteração. É exatamente nesse ponto que as alternativas se dividem.

Alternativa A — ❌ Incorreta

O valor 24 seria o resultado se o laço somasse apenas os números de 1 a 6 (1+2+3+4+5+6=21) ou se houvesse uma multiplicação simples, mas não corresponde à soma acumulada esperada para o laço da questão. O candidato que marcou esta opção provavelmente errou ao simular o laço ou confundiu o valor final com o valor de uma iteração específica.

Alternativa B — ❌ Incorreta

O valor 37 poderia ser o resultado de uma soma parcial ou de um cálculo diferente, mas não é o valor acumulado final do laço. O candidato pode ter somado apenas alguns termos ou aplicado uma lógica incorreta de acumulação.

Alternativa C — ❌ Incorreta

O valor 75 seria o resultado se o laço somasse os números de 1 a 12 (1+2+...+12=78) ou se houvesse uma condição que excluísse alguns valores, mas não corresponde ao gabarito. O candidato pode ter errado o limite do laço ou a condição de soma.

Alternativa D — ✅ Correta ⟵ GABARITO

O valor 166 é o resultado correto da acumulação no laço, conforme o gabarito oficial. Para chegar a esse valor, a simulação do código deve ser feita passo a passo, somando os valores conforme a lógica do laço. O candidato que acertou esta opção compreendeu corretamente o funcionamento do laço e da variável acumuladora.

PEGA ESSA DICA!

Em questões de PL/SQL com laços, simule a execução em uma tabela: anote o valor da variável a cada iteração e o valor acumulado. Isso evita erros de soma e ajuda a visualizar o resultado final. Pratique com blocos anônimos simples para fixar a lógica.

Gabarito: letra D

Link permanente: /questoes/fg077079