Considere o seguinte comando: CREATE OR REPLACE PROCEDURE q...
CREATE OR REPLACE PROCEDURE questao AS BEGIN FOR k IN (SELECT * FROM PESSOA) LOOP cont := 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.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Apenas I, III e IV estão corretas.
Ao analisar o comando apresentado, precisamos entender alguns conceitos importantes em PL/SQL e o funcionamento de procedimentos no Oracle para justificar a alternativa correta:
- A opção [OR REPLACE] é de fato opcional e permite que uma nova definição para a procedure seja criada sem a necessidade de removê-la manualmente antes de criar uma nova versão. Portanto, se a procedure já existir, ela será substituída, o que justifica a assertiva I como correta.
- O comando FOR LOOP que é utilizado nesse exemplo irá executar uma vez para cada registro retornado pela consulta. Como não é necessária uma condição de saída explícita para este tipo de loop, a assertiva II está incorreta. O loop terminará naturalmente quando todos os registros forem processados.
- A saída deste procedimento irá, de fato, imprimir o nome de cada pessoa retornada pela consulta à tabela PESSOA, validando a assertiva III.
- A quantidade de vezes que o LOOP será executado depende diretamente do número de registros (ou tuplas) retornados pela consulta SQL dentro do loop. Isso confirma que a assertiva IV é correta.
O conhecimento necessário para resolver essa questão inclui o entendimento da sintaxe de criação de procedimentos em PL/SQL no Oracle, o funcionamento de laços de repetição FOR LOOP, e como funciona a impressão de saídas em SQL com a ferramenta DBMS_OUTPUT. Com base na análise das assertivas e dos conceitos aplicados, concluímos que a alternativa correta é aquela que reconhece as assertivas I, III e IV como verdadeiras.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo