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;