管道排时未找到数据
No data found When Piping Row
我有一个 returns 记录列表的功能,然后我循环遍历列表并通过管道传输它们,但是在管道传输过程中我收到 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;
可能在选项卡中没有对应 i 的每个值的条目。
尝试使用 first 和 next 循环
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;
我有一个 returns 记录列表的功能,然后我循环遍历列表并通过管道传输它们,但是在管道传输过程中我收到 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;
可能在选项卡中没有对应 i 的每个值的条目。
尝试使用 first 和 next 循环
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;