ORA-00947 Недостаточно значений при объявлении типа глобально
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: недостаточно значений ошибки
Однако, когда я объявляю тип записи и вложенную таблицу этого типа записи, а затем переменную вложенной таблицы внутри пакета, вышеуказанный массовый сбор работает, и он не выдаст ошибку
Кто-нибудь может мне помочь с этим?
1 ответ
Решение
Вы не можете просто поместить значения в таблицу объектов - вам нужно преобразовать значения в объекты соответствующего типа, а затем вставить объекты. Пытаться
procedure temp is
v_nt foo_nt;
begin
select FOO_OBJ(id ,status)
bulk collect into v_nt
from foo;
end temp;
Не проверен на животных - вы будете первым!
Поделитесь и наслаждайтесь.