2
respostas

Porque roda o Fetch antes e depois do loop mas não roda dentro do loop?

Minha dúvida nesse exercicio é entender porque roda o cursor antes do loop e depois do loop mas não roda dentro do loop?

SET SERVEROUTPUT ON;
DECLARE
   v_NOME TAB_FETCH.nome%type;``
   v_VALOR TAB_FETCH.valor%type;
   v_VALOR_ACUMULATIVO TAB_FETCH.valor%type:=0;
   CURSOR cur_TABFETCH IS SELECT NOME, VALOR FROM TAB_FETCH WHERE MOD(ID,2) = 0;
BEGIN
   OPEN cur_TABFETCH;
  -- (Roda aqui) FETCH cur_TABFETCH INTO v_NOME, v_VALOR;
   LOOP
       v_VALOR_ACUMULATIVO := v_VALOR_ACUMULATIVO + v_VALOR;
   EXIT WHEN v_VALOR_ACUMULATIVO >= 30;
    FETCH cur_TABFETCH INTO v_NOME, v_VALOR;
   END LOOP;
   CLOSE cur_TABFETCH;
   dbms_output.put_line('VALOR DO PRODUTO = ' || v_NOME);
END;
2 respostas

Consegui entender que o segundo fetch está dentro do loop, depois do exit, mas antes do end loop. Valeeu

Leonardo, oi! Tudo certo?

Mandou bem! Fico feliz que sua dúvida tenha sido rapidamente esclarecida. Algumas vezes só precisamos de um tempinho e desviar o foco para que tudo faça sentido, não é?

Abração. :)