Oracle Advance Queue — проблема с типом полезной нагрузки (тип вложенного объекта)

Я пытаюсь создать таблицу Advance Queue в Oracle. Я создал один тип объекта и тип таблицы для активов человека (например, автомобиль, велосипед, дом) и другой тип объекта для человека (с именем столбца и типом таблицы активов).

Мне нужно хранить полезную нагрузку, которая будет иметь вложенные детали (заголовок и вложенные детали). Однако я получаю сообщение об ошибке ниже при выполнении CREATE_QUEUE_TABLE:

ORA-22913: must specify table name for nested table column or attribute
ORA-06512: at “SYS.DBMS_AQADM”, line 81
ORA-06512: at line 2

Выполнить блок:

begin
    DBMS_AQADM.CREATE_QUEUE_TABLE (
        queue_table => 'sau_q_tab'
       , queue_payload_type => 'sau_person_o_type'
    );
end;

Сведения о типе объекта:

CREATE OR REPLACE TYPE sau_asset_o_type as object (
    asset_id number,
    asset_name varchar2(30),
    CONSTRUCTOR FUNCTION sau_asset_o_type
        RETURN SELF AS RESULT
);
/

CREATE OR REPLACE TYPE sau_asset_t_type AS TABLE OF sau_asset_o_type;
/

CREATE OR REPLACE TYPE sau_person_o_type as object (
    person_name varchar2(30),
    person_assets sau_asset_t_type,
    CONSTRUCTOR FUNCTION sau_person_o_type /*nested table type*/
         RETURN SELF AS RESULT);
/

CREATE OR REPLACE TYPE BODY sau_person_o_type IS
    CONSTRUCTOR FUNCTION sau_person_o_type
    RETURN SELF AS RESULT IS
    BEGIN
        RETURN;
    END;
END;
/

CREATE OR REPLACE TYPE BODY sau_asset_o_type IS
    CONSTRUCTOR FUNCTION sau_asset_o_type
    RETURN SELF AS RESULT IS
    BEGIN
        RETURN;
    END;
END;
/

person Saurabh Srivastava    schedule 07.01.2018    source источник
comment
У вас есть веская причина для использования Types? Забудьте о рекламе ORDBMS: типы Oracle хороши для программных конструкций, но не так хороши для сохраняемости данных. Реализации AQ, как правило, используют полезные данные XML, потому что они просто проще.   -  person APC    schedule 08.01.2018


Ответы (1)