Considere o seguinte comando: CREATE OR REPLACE PROCEDURE q...

Próximas questões
Com base no mesmo assunto
Q2172652 Banco de Dados
Considere o seguinte comando:
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.
Alternativas

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