Данные не найдены при прокладке трубопровода

У меня есть функция, которая возвращает список записей, а затем я зацикливаюсь на списке и отправляю их по конвейеру, однако во время конвейера я получаю ORA-01403: no data found ошибка.

Ниже приведен код, который я использую, и я получаю эту ошибку в некоторых строках, а не во всех.

НОТА: tab_pipe.t_tab а также tab.t_tab таблицы одной записи tab.r_tab,

Function pipelinedFunction(ref varchar2, seq varchar2) Return tab_pipe.t_tab pipelined Is
pragma autonomous_transaction;
  errtxt varchar2(400);
  tab tab.t_tab;
begin
  tab := generate_table(ref, seq);

  for i in 1 .. tab.count loop
    begin
      pipe row(tab(i));
    EXCEPTION
      when others then
        v_errtxt := sqlerrm;
        insert into test_kc values('an error occurred piping the row i = ' || i || ' - sqlerrm = ' || v_errtxt); commit;
    end;
  end loop;

  return;
end pipelinedFunction;

1 ответ

Решение

Возможно нет записи во вкладке для каждого значения i.

Попробуйте цикл, используя первый и следующий

declare
  l_index PLS_INTEGER;
BEGIN
  l_index := tab.FIRST;

  WHILE (l_index IS NOT NULL)
  LOOP
    pipe row(tab(l_index)); 
    l_index := tab.NEXT(l_index);
  END LOOP;
END;
Другие вопросы по тегам