У меня есть следующий тип:
CREATE OR REPLACE TYPE tbusiness_inter_item_bag AS OBJECT (
item_id NUMBER,
system_event_cd VARCHAR2 (20),
CONSTRUCTOR FUNCTION tbusiness_inter_item_bag RETURN SELF AS RESULT
);
CREATE OR REPLACE TYPE BODY tbusiness_inter_item_bag
AS
CONSTRUCTOR FUNCTION tbusiness_inter_item_bag RETURN SELF AS RESULT
AS
BEGIN
RETURN;
END;
END;
когда я выполняю следующий скрипт, я получаю ошибку «Ссылка на неинициализированный составной», которая имхо вполне подходит.
DECLARE
item tbusiness_inter_item_bag;
BEGIN
item.system_event_cd := 'ABC';
END;
Это также вызывает ту же ошибку:
item.item_id := 3;
Но если я изменю свой тип объекта на:
CREATE OR REPLACE TYPE tbusiness_inter_item_bag AS OBJECT (
item_id NUMBER(1),
system_event_cd VARCHAR2 (20),
CONSTRUCTOR FUNCTION tbusiness_inter_item_bag RETURN SELF AS RESULT
);
тогда последнее утверждение больше не вызывает ошибок (где мой "элемент" еще не инициализирован):
item.item_id := 3;
Разве я не должен получить ту же ошибку ORA-06530?
ps: Oracle Database 10g Enterprise Edition, выпуск 10.2.0.4.0 - 64bi