O exercicio pedia um FOR, no resultado não tem o for...
Ficou assim:
CREATE OR REPLACE PROCEDURE META_VENDAS (p_meta IN FLOAT, p_soma_vendas OUT FLOAT, p_id_retorno OUT number)
IS
   v_soma_vendas FLOAT := 0;
   v_vendas number;
   v_valor_venda produto_venda_exercicio.valor_total%type;
BEGIN
   SELECT COUNT(*) into v_vendas FROM produto_venda_exercicio;  
    for v_contador in 1..v_vendas loop
       SELECT produto_venda_exercicio.valor_total into v_valor_venda 
       from produto_venda_exercicio where produto_venda_exercicio.id = v_contador;
       v_soma_vendas := v_soma_vendas + v_valor_venda;    
       IF v_soma_vendas >= p_meta THEN
            p_id_retorno := v_contador;
            p_soma_vendas :=  v_soma_vendas;
        exit;
       end if; 
     END LOOP;  
END;
SET SERVEROUTPUT ON;
DECLARE
   p_soma_vendas FLOAT;
   p_id_retorno number;
BEGIN
   META_VENDAS(20000, p_soma_vendas, p_id_retorno);
   dbms_output.put_line(p_soma_vendas || ' - ' || p_id_retorno);
END;