4

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

私はいくつかのニュースグループを見て、見つけたものをすべて試しましたが、成功しませんでした.

  1. (成功して)多くの許可を与えた

    • 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 ユーザー;
  2. desc dbms_aq は、DEQUEUE、ENQUEUE、LISTEN などの多くの関数を示します

  3. catqueue.sql と dbmsaq.plb の両方で SQLPlus で実行

誰が何が間違っているのか考えていますか?

編集済み

http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.htmlで説明されていることはすべて実行できるため、dbms_aq は何らかの形で表示されますが、私の手順では表示されません。

4

2 に答える 2

10

やれば効くのか…

SYS.DBMS_AQ 

ただの代わりに

DBMS_AQ

もしそうなら、同義語がありません。

編集

「PLS-00201: identifier 'SYS.DBMS_AQ」が表示される場合は、許可を再確認します。

GRANT EXECUTE ON SYS.DBMS_AQ to <your-user>;

また、確認のために、ロールを介してではなく、ユーザーに直接実行権限を付与しましたか?

于 2009-09-04T12:50:56.790 に答える