【发布时间】:2010-11-25 14:38:05
【问题描述】:
我对 Oracle 9.2 和 JMS 有疑问。 我创建了 PL/SQL 例程来将 XML 文本(从文件或 CLOB)发送到队列, 但是这个例程不编译。
我的代码如下(省略填充信息):
create or replace procedure jms_test(msg varchar2)
is
id pls_integer;
message sys.aq$_jms_stream_message;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
msgid raw(16);
java_exp exception;
v_filehandle_input utl_file.file_type;
v_newline varchar2(32767);
pragma exception_init(java_exp, -24197);
begin
message := sys.aq$_jms_stream_message.construct;
message.set_string_property('FROM', 'TEST');
id := message.clear_body(-1);
end;
甲骨文报告说:
Error(6,21): PLS-00201: identifier 'DBMS_AQ' must be declared
我查看了一些新闻组并尝试了所有我找到的方法,但没有成功。
-
授予(成功)许多权限
- 向用户授予资源;
- 向用户授予连接;
- 向用户授予执行任何程序;
- 将 aq_administrator_role 授予用户;
- 将 aq_user_role 授予用户;
- 在 dbms_aqadm 上向用户授予执行权限;
- 将 dbms_aq 上的执行权限授予用户;
- 在 dbms_aqin 上授予用户执行权限;
desc dbms_aq 显示了许多函数,例如 DEQUEUE、ENQUEUE、LISTEN
在 SQLPlus 中执行 catqueue.sql 和 dbmsaq.plb
有人知道哪里出了问题吗?
已编辑:
我可以执行http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.html 中描述的所有操作,因此 dbms_aq 以某种方式可见,但在我的过程中不可见。
【问题讨论】:
-
澄清一下:您执行“desc dbms_aq”的用户与您要编译该过程的用户相同,对吧?
-
是的,它是在同一个 SQLDeveloper 会话中完成的。
标签: oracle plsql jms advanced-queuing