我需要从过程中的集合中将一些值插入到表中,但出现ORA-00902: invalid datatype
错误。
这是一个目标表:
create table t_test (col01 number, col02 number);
我在包中定义了一种集合和流水线函数:
create or replace package p_test is
type t_num is table of number;
function rtn(arg_tn t_num) return t_num PIPELINED;
end p_test;
/
create or replace package body p_test is
function rtn(arg_tn t_num) return t_num PIPELINED is
tn_row number;
begin
for i in arg_tn.first .. arg_tn.last loop
tn_row := arg_tn(i);
pipe row(tn_row);
end loop;
return;
end;
end p_test;
这是我的 PL/SQL 程序:
declare
tn_test p_test.t_num := p_test.t_num(10,20,30);
n_num number := 69;
begin
insert into T_TEST(col01, col02) select n_num, column_value from table(tn_test);
end;
结果表如下所示:
col01 | col02
-------|-------
69 | 10
69 | 20
69 | 30
这是我得到的错误:
我究竟做错了什么?如何解决?我本可以在一个for
循环中完成此操作,但是对于所需目的来说效率是否太低了?