Oracle ORA-00947全局声明类型时没有足够的值
表已创建Oracle ORA-00947全局声明类型时没有足够的值,oracle,plsql,oracle11g,ora-00947,Oracle,Plsql,Oracle11g,Ora 00947,表已创建 create table foo( id number, status varchar2(10) ); 这是一种非常奇怪的情况,当我全局地创建一个类型对象和该类型的嵌套表,并创建一个嵌套表类型的变量,然后批量收集到我得到的变量中 ORA-00947:值不足错误 但是,当我声明一个记录类型和该记录类型的嵌套表,然后在包中声明嵌套表的一个变量时,上面的批量收集工作,并且不会抛出错误 有人能帮我解决这个问题吗 不能只将值放入对象表中-需要将值转换为适当类型的对象,然后插入对
create table foo(
id number,
status varchar2(10)
);
这是一种非常奇怪的情况,当我全局地创建一个类型对象和该类型的嵌套表,并创建一个嵌套表类型的变量,然后批量收集到我得到的变量中
ORA-00947:值不足错误
但是,当我声明一个记录类型和该记录类型的嵌套表,然后在包中声明嵌套表的一个变量时,上面的批量收集工作,并且不会抛出错误
有人能帮我解决这个问题吗 不能只将值放入对象表中-需要将值转换为适当类型的对象,然后插入对象。试一试
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;
没有在动物身上测试-你会是第一个
共享和享受。在Oracle 11.2上测试。谢谢谢谢你的提示(Oracle 11.2)谢谢!我也在19世纪工作。
procedure temp is
v_nt foo_nt;
begin
select FOO_OBJ(id ,status)
bulk collect into v_nt
from foo;
end temp;