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:値が足りませんエラー
ただし、レコードタイプとそのレコードタイプのネストされたテーブルを宣言し、次にネストされたテーブルの変数をパッケージ内で宣言すると、上記の一括収集が機能し、エラーはスローされません
誰かがこれで私を助けることができますか?
オブジェクトのテーブルに値を入れるだけでは不十分です。値を適切なタイプのオブジェクトに変換してから、オブジェクトを挿入する必要があります。試してみてください
procedure temp is
v_nt foo_nt;
begin
select FOO_OBJ(id ,status)
bulk collect into v_nt
from foo;
end temp;
動物でテストされていません-あなたが最初になります!
共有してお楽しみください。