Oracle 9.2 と JMS に問題があります。XML テキストを (ファイルまたは CLOB から) キューに送信する PL/SQL ルーチンを作成しましたが、このルーチンはコンパイルされません。
私のコードは次のようになります(メッセージの記入は省略されています):
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
私はいくつかのニュースグループを見て、見つけたものをすべて試しましたが、成功しませんでした.
(成功して)多くの許可を与えた
- GRANT RESOURCE TO ユーザー;
- GRANT CONNECT TO ユーザー;
- GRANT EXECUTE ANY PROCEDURE TO user;
- ユーザーに aq_administrator_role を付与します。
- GRANT aq_user_role TO user;
- GRANT EXECUTE ON dbms_aqadm TO ユーザー;
- GRANT EXECUTE ON dbms_aq TO ユーザー;
- GRANT EXECUTE ON dbms_aqin TO ユーザー;
desc dbms_aq は、DEQUEUE、ENQUEUE、LISTEN などの多くの関数を示します
catqueue.sql と dbmsaq.plb の両方で SQLPlus で実行
誰が何が間違っているのか考えていますか?
編集済み:
http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.htmlで説明されていることはすべて実行できるため、dbms_aq は何らかの形で表示されますが、私の手順では表示されません。