Boa tarde, não estou conseguindo entende ro que fiz de errado no exercício. A mensagem de erro parece-me dizer que a função que criei retorna mais de uma linha como resultado? (o erro está transcrito no final dessa mensagem).
Meu codigo
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 produto_venda_exercicio.valor_total%type;
begin
v_id := soma_valor(10000);
dbms_output.put_line(v_id);
end;
Erro obtido
Erro a partir da linha : 25 no comando -
declare
v_id produto_venda_exercicio.valor_total%type;
begin
v_id := soma_valor(10000);
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 15
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