1
resposta

[Dúvida] Resolução do exercício soma_valor sem sucesso

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
1 resposta

Oii, Gustavo! Tudo bem?

Vi que você conseguiu encontrar a solução para o bug, de acordo com este tópico. Parabéns!

Obrigada por compartilhar conosco.

Abraços e bons estudos!