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: not enough values error
但是,当我声明一个记录类型和嵌套表的那个记录类型然后一个嵌套表的变量在包中,那么上面的批量收集工作,它不会抛出错误
有人可以帮我吗?
您不能将值放入对象表中,您需要将值转换为适当类型的对象,然后插入对象.尝试
procedure temp is v_nt foo_nt; begin select FOO_OBJ(id,status) bulk collect into v_nt from foo; end temp;
没有动物测试 – 你会是第一!
分享享受.