Pular para o conteúdo principal

Questão de Banco de Dados — PL-SQL — FUNDATEC 2023

Banco de DadosPL-SQL
Código
qq896750
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Desenvolvimento Oracle PL/SQL
Considere o seguinte comando:CREATE OR REPLACE PROCEDURE questao ASBEGINFOR k IN (SELECT * FROM PESSOA)LOOPcont := cont+1;DBMS_OUTPUT.PUT_LINE('NOME: '||k.NOME);END LOOP;END;Analise as assertivas abaixo e assinale a alternativa correta.I. A opção [OR REPLACE] é opcional na sintaxe da criação da procedure e irá sobrescrever a procedure.II. O comando LOOP não possui EXIT e nem EXIT WHEN, por isso será infinito.III. A saída irá mostrar a lista de nomes da tabela PESSOA.IV. A quantidade de vezes que o LOOP será executado é determinada pela quantidade de tuplas da tabela PESSOA.
  1. ATodas estão corretas.
  2. BTodas estão incorretas.
  3. CApenas II e III estão corretas.
  4. DApenas III e IV estão corretas.
  5. EApenas I, III e IV estão corretas.
Revelar gabarito e comentário

GabaritoE — Apenas I, III e IV estão corretas.

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: Criação de Procedure e Loop FOR

Gabarito: letra E. Apenas as assertivas I, III e IV estão corretas. O comando CREATE OR REPLACE PROCEDURE permite, opcionalmente, sobrescrever uma procedure existente (I). O loop FOR k IN (SELECT * FROM PESSOA) é um loop implícito que percorre automaticamente todas as linhas do cursor, não necessitando de EXIT ou EXIT WHEN — ele termina quando não há mais registros (II é falsa). A saída exibirá os nomes de todas as pessoas da tabela (III), e o número de iterações será exatamente a quantidade de tuplas da tabela PESSOA (IV).

Assertiva I — ✅ Correta

A cláusula OR REPLACE é opcional na sintaxe. Se a procedure já existir, ela é recriada (sobrescrita) sem necessidade de DROP prévio.

Assertiva II — ❌ Incorreta

O loop FOR ... IN (SELECT ...) é um cursor implícito. O Oracle PL/SQL automaticamente abre, busca cada linha e fecha o cursor. Não há risco de loop infinito, pois a iteração ocorre exatamente uma vez para cada linha do resultado. A ausência de EXIT é inerente a esse tipo de loop.

Assertiva III — ✅ Correta

Dentro do loop, a variável k.NOME refere-se à coluna NOME da tabela PESSOA para a linha corrente. Portanto, DBMS_OUTPUT.PUT_LINE imprimirá todos os nomes, um por linha.

Assertiva IV — ✅ Correta

O FOR loop itera sobre cada registro retornado pela consulta SELECT * FROM PESSOA. O número de repetições é exatamente a cardinalidade da tabela naquele momento.

NÃO CAIA NESSA!

A assertiva II explora a confusão entre FOR loop (que controla automaticamente a iteração) e um LOOP simples (que exigiria EXIT). Lembre-se: FOR k IN (consulta) é auto-suficiente.

Gabarito: letra E — corretas I, III e IV.

Link permanente: /questoes/qq896750