Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aplicando o cursos

Criando a procedure

create or replace PROCEDURE SOMA_VENDAS_CURSOR 
(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
   OPEN cur_VENDA;
   FETCH cur_VENDA INTO v_ID;
   WHILE (cur_VENDA%FOUND AND (v_VENDA_TOTAL < p_VENDA_LIMITE)) LOOP
      SELECT VALOR_TOTAL INTO v_VALOR_TOTAL FROM PRODUTO_VENDA_EXERCICIO WHERE ID = v_ID;
      v_VENDA_TOTAL := v_VENDA_TOTAL + v_VALOR_TOTAL;
      IF v_VENDA_TOTAL < p_VENDA_LIMITE THEN
         FETCH cur_VENDA INTO v_ID;
      END IF;
    END LOOP;
    CLOSE cur_VENDA;
    p_ID_RETORNO := v_ID;
END; 

Executando a procedure

SET SERVEROUTPUT ON;
DECLARE
   v_NUM INTEGER;
BEGIN
   SOMA_VENDAS_CURSOR(20000, v_NUM);
   dbms_output.put_line('A venda limite é: '||v_NUM);
END;
1 resposta
solução!

Olá Anne, tudo bem com você?

Seu script está correto. Continue com esse empenho!

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software