Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — FCC 2024
Banco de Dados›PL/SQL e Outras Extensões SQL
Código
fc147221
Banca
FCC
Órgão
TRT 20
Ano
2024
Cargo
TJ TRT20
Considere o seguinte código PL/SQL: DECLARE v_num NUMBER := 10; BEGIN LOOP DBMS OUT.PUT_LINEP(vU nTum) ; v_num:= v_num- 1; EXIT WHEN v_num<5, END LOOP; END; / Sua execução imprimirá
A6 linhas numeradas de 1 a 6.
B5 linhas numeradas de 5 a 9.
C5 linhas numeradas de 1 a 5.
D6 linhas numeradas de 10 a 5.
E10 linhas numeradas 0 as 9.
Revelar gabarito e comentário▾
GabaritoD — 6 linhas numeradas de 10 a 5.
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: Estruturas de Repetição e o Comando LOOP
Gabarito: letra D. O código imprime os valores de v_num de 10 até 5, totalizando 6 linhas, porque o EXIT WHEN é avaliado após o DBMS_OUTPUT.PUT_LINE e o decremento, e a condição v_num < 5 só é verdadeira quando v_num chega a 4, encerrando o loop antes de imprimir esse valor. A lógica do LOOP básico do PL/SQL, com a ordem das instruções dentro do bloco, é o que determina o resultado.
O PL/SQL (Procedural Language/Structured Query Language) é a extensão procedural da linguagem SQL para o banco de dados Oracle. Ele permite combinar comandos SQL com estruturas de controle de fluxo, como condicionais (IF, CASE) e loops (LOOP, WHILE, FOR). A unidade básica de um programa PL/SQL é o bloco, que possui a estrutura DECLARE (declaração de variáveis), BEGIN (seção executável) e EXCEPTION (tratamento de erros), finalizado com END.
O comando LOOP básico é a forma mais simples de repetição. Ele executa um bloco de instruções indefinidamente até que um comando EXIT ou EXIT WHEN seja encontrado. A sintaxe é:
LOOP
-- sequência de declarações;
EXIT WHEN condição;
END LOOP;
A pegadinha desta questão está na ordem das instruções dentro do loop. O código apresentado faz o seguinte:
Declara a variável v_num com valor inicial 10.
Entra no LOOP.
Imprime o valor atual de v_num (primeira iteração: 10).
Decrementa v_num em 1 (primeira iteração: vira 9).
Verifica a condição EXIT WHEN v_num < 5 (primeira iteração: 9 < 5? Não, continua).
Repete os passos 3 a 5 até que a condição seja verdadeira.
Vamos simular a execução passo a passo:
Iteração
Valor impresso
Valor após decremento
Condição v_num < 5?
Ação
1ª
10
9
9 < 5? Não
Continua o loop
2ª
9
8
8 < 5? Não
Continua o loop
3ª
8
7
7 < 5? Não
Continua o loop
4ª
7
6
6 < 5? Não
Continua o loop
5ª
6
5
5 < 5? Não
Continua o loop
6ª
5
4
4 < 5? Sim
Sai do loop
Portanto, os valores impressos são 10, 9, 8, 7, 6 e 5, totalizando 6 linhas. O valor 4 não é impresso porque a condição de saída é verificada depois do comando de impressão e do decremento. Se a ordem fosse EXIT WHEN antes do PUT_LINE, o resultado seria diferente.
Agora, vamos analisar cada alternativa:
1Imprime v_num
2Decrementa v_num
3Testa EXIT WHEN
4Repete ou sai
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que serão impressas 6 linhas numeradas de 1 a 6. O erro está na sequência dos números. O loop começa com v_num = 10 e decrementa, então os números impressos são decrescentes (10, 9, 8, 7, 6, 5), não crescentes de 1 a 6. A alternativa confunde a quantidade de iterações (6) com os valores impressos.
Alternativa B — ❌ Incorreta
Afirma que serão impressas 5 linhas numeradas de 5 a 9. O erro está na quantidade de linhas. O loop executa 6 iterações, imprimindo os valores de 10 a 5. A alternativa erra tanto na contagem (5 linhas) quanto no intervalo (5 a 9), que não corresponde à execução do código.
Alternativa C — ❌ Incorreta
Afirma que serão impressas 5 linhas numeradas de 1 a 5. O erro está na quantidade e na sequência. O loop executa 6 iterações, imprimindo valores decrescentes de 10 a 5. A alternativa erra na contagem (5 linhas) e na sequência (1 a 5), que não corresponde à execução do código.
Alternativa D — ✅ Correta ⟵ GABARITO
Afirma que serão impressas 6 linhas numeradas de 10 a 5. Esta é a alternativa correta. A simulação da execução mostra que o loop imprime os valores 10, 9, 8, 7, 6 e 5, totalizando 6 linhas, exatamente como descrito. A condição EXIT WHEN v_num < 5 é verificada após a impressão e o decremento, garantindo que o valor 5 seja impresso antes da saída.
Alternativa E — ❌ Incorreta
Afirma que serão impressas 10 linhas numeradas de 0 a 9. O erro está na quantidade e na sequência. O loop não começa em 0 nem imprime 10 linhas. Ele começa em 10 e imprime apenas 6 valores (10 a 5). A alternativa confunde o valor inicial da variável com a quantidade de iterações e inverte a ordem dos números.