Questão de Banco de Dados — PL-SQL — FUNDATEC 2023
Banco de Dados›PL-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.
ATodas estão corretas.
BTodas estão incorretas.
CApenas II e III estão corretas.
DApenas III e IV estão corretas.
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.