Nao consegui encontra o erro na minha solução.
create or replace function soma_valor(
p_valor_limite in produto_venda_exercicio.valor_total%type)
return integer
is
v_ponteiro integer := 1;
v_valor produto_venda_exercicio.valor_total%type := 0;
v_valor_total produto_venda_exercicio.valor_total%type :=0;
v_limite integer := 1;
v_valor_limite produto_venda_exercicio.valor_total%type :=0;
begin
select max(id) into v_limite from produto_venda_exercicio;
for v_ponteiro in 1..V_Limite loop
select valor_total into v_valor from produto_venda_exercicio where id = v_ponteiro;
v_valor_total := v_valor_total+v_valor;
if v_valor_total > p_valor_limite then
exit;
end if;
end loop;
return v_ponteiro;
end soma_valor;
set serveroutput on;
declare
v_id integer := 0;
begin
v_id := soma_valor(20000);
dbms_output.put_line(v_id);
end;
Erro relatado
Erro a partir da linha : 23 no comando -
declare
v_id integer := 0;
begin
v_id := soma_valor(20000);
dbms_output.put_line(v_id);
end;
Relatório de erros -
ORA-01422: a extração exata retorna mais do que o número solicitado de linhas
ORA-06512: em "CURSOPLSQL.SOMA_VALOR", line 13
ORA-06512: em line 4
01422. 00000 - "exact fetch returns more than requested number of rows"
*Cause: The number specified in exact fetch is less than the rows returned.
*Action: Rewrite the query or change number of rows requested