create table foo(
id number,
status varchar2(10)
);
创建表。
insert into foo values( 1, 'open' );
insert into foo values( 2, 'close' );
insert into foo values( 3, 'open' );
insert into foo values( 4, 'open' );
insert into foo values( 5, 'close' );
create type foo_obj is object (
id number,
status varchar2(10)
);
/
create type foo_nt
as table of foo_obj;
/
create or replace package test_bulk
is
procedure temp;
end;
/
create or replace package body test_bulk
is
procedure temp
is
v_nt foo_nt;
begin
select id ,status
bulk collect into v_nt
from foo;
end temp;
end test_bulk;
这是一个非常奇怪的情况,当我创建一个类型对象和该类型的嵌套表全局并创建嵌套表类型的变量并批量收集到我得到的变量
ORA-00947:没有足够的值错误
然而,当我声明一个记录类型和该记录类型的嵌套表然后一个嵌套表的变量在包内,那么上面的批量收集工作,它不会抛出错误
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:28)
您不能只将值放入对象表中 - 您需要将值转换为适当类型的对象,然后插入对象。尝试
procedure temp is
v_nt foo_nt;
begin
select FOO_OBJ(id ,status)
bulk collect into v_nt
from foo;
end temp;
未在动物身上进行测试 - 您将成为第一个!
分享并享受。