1
resposta

[Dúvida] Outra possibilidade de resposta?

Ao invés de utilizar o IF usei o END WHEN. A resposta foi 6 quando rodei a procedure. Queria entender se é uma opção real de resposta neste exercício ou não...

Como fiz:

create or replace PROCEDURE SOMA_VENDAS_CURSOR_for
(p_VENDA_LIMITE IN produto_venda_exercicio.valor_total%type
 ,p_ID_RETORNO OUT produto_venda_exercicio.id%type)
IS
   v_ID produto_venda_exercicio.id%type := 1;
   v_VALOR_TOTAL produto_venda_exercicio.valor_total%type;
   v_VENDA_TOTAL produto_venda_exercicio.valor_total%type := 0;
   CURSOR cur_VENDA IS SELECT ID FROM PRODUTO_VENDA_EXERCICIO;
BEGIN
FOR I IN CUR_VENDA
LOOP
V_ID := I.ID;
SELECT VALOR_TOTAL INTO v_VALOR_TOTAL FROM PRODUTO_VENDA_EXERCICIO WHERE ID = v_ID;
v_VENDA_TOTAL := v_VENDA_TOTAL + v_VALOR_TOTAL;
EXIT WHEN v_VENDA_TOTAL >= p_VENDA_LIMITE;
END LOOP;
   p_ID_RETORNO := v_ID;
END;
1 resposta

Oiê, tudo certo?

Desde já, peço desculpas pela demora em te responder.

Utilizar o EXIT WHEN é uma opção real de resposta sim! Essa estrutura, nesse contexto, pode ser vista como uma forma mais simplificada de escrever o IF em um loop. Ambos são utilizados para controlar a saída de um loop, então é possível utilizar qualquer um dos dois nesse cenário.

Parabéns pela iniciativa e por explorar novas possibilidades para o desenvolvimento da procedure — isso é muito importante para a construirmos os nossos bloquinhos de conhecimento!

Continue sempre com essa dedicação! Fico à disposição em caso de dúvidas.

Abraço.