1
似乎需要一些幫助。我試圖根據下面的腳本基於對象類型構建一些隊列表;Oracle高級隊列 - ORA-38818 - 對已編輯對象的非法引用
...
GRANT EXECUTE ON dbms_aq TO sch_utl
/
GRANT EXECUTE ON dbms_aqadm TO sch_utl
/
GRANT aq_administrator_role TO sch_utl
/
BEGIN
DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE(privilege => 'MANAGE_ANY'
,grantee => 'sch_utl'
,admin_option => FALSE);
END;
/
1.
create or replace type o_utl_q_log as object
(/*some variables*/
constructor function o_utl_q_log return self as result,
member procedure queue_enqueue,
static function queue_dequeue(p_wait number default 0)
return o_utl_q_log,
);
2.
create or replace type body o_utl_q_log
(
...
);
類型和其的身體沒有錯誤編譯,當發生的問題;
3.
begin
dbms_aqadm.create_queue_table(queue_table => 't_utl_q_log'
, queue_payload_type => 'o_utl_q_log'
, sort_list => 'PRIORITY,ENQ_TIME'
, storage_clause => 'tablespace TS_UTL_Q_TABLE_LOG'
, comment => 'Log queue table') ;
end;
我得到這個犯錯的說明;
ORA-38818:非法參照editioned對象SCH_UTL.O_UTL_Q_LOG
ORA-06512:在 「SYS.DBMS_AQADM」,線81
ORA-06512:在第2行
38818. 00000 - 「非法參照editioned對象%s。%s「
*原因:試圖違反規則」未編制對象
可能不依賴於已編輯的對象。「
爲了以防萬一,我正在使用XE 11g R2。
非常感謝任何人的幫助!
馬修,謝謝你的回答。看起來像這個不工作。我試圖按照下面的說法使用'不可訂閱'條款; – RafalK
創建或替換不可定型的類型o_object_type作爲對象(attr數量) - 但我得到ora-00922丟失或無效的選項。任何其他想法? – RafalK
啊...我看到你在11g上。 「無法使用」僅適用於12C。抱歉。我建議你嘗試的唯一方法就是在全新的用戶下創建一個類型 - 沒有啓用「EDITIONS」的用戶。 –