似乎需要一些帮助。我试图根据下面的脚本基于对象类型构建一些队列表;
0
...
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:对编辑对象SCH_UTL.O_UTL_Q_LOG的非法引用
ORA-06512:at" SYS.DBMS_AQADM",第81行
ORA-06512:第2行
38818. 00000 - "非法引用已编辑的对象%s。%s"
*原因:试图违反规则"未加工的对象
可能不依赖于已编辑的对象。"
以防万一,我正在使用XE 11g R2。
非常感谢任何人的帮助!
答案 0 :(得分:0)
默认情况下,类型是可编辑的。尝试:
create or replace noneditionable type o_utl_q_log as object...
而不是
create or replace type o_utl_q_log as object...