1

Oracle Advanced Queuing と dbms_aq パッケージで苦労した後、 別の問題に遭遇しました。Oracle チュートリアルからコードをコピーしましたが、このコードをコンパイルすると:

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;
begin
    message := sys.aq$_jms_stream_message.construct(0);
    message.set_string_property('FROM', 'TEST');
    id := message.clear_body(-1);
end;

それは不平を言う:

Error(9,40): PLS-00302: component 'CONSTRUCT' must be declared
Error(10,10): PLS-00302: component 'SET_STRING_PROPERTY' must be declared
Error(11,16): PLS-00302: component 'CLEAR_BODY' must be declared

What's in my JMS queue ?の成功レシピを試したので、このコードはプロシージャ本体の外で機能すると思います。

私の Oracle バージョンは次のとおりです。 Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

何が間違っている可能性がありますか?

4

2 に答える 2

2

データベースのバージョンの問題のようです。AQ$_JMS_STREAM_MESSAGE には、10G では構成メソッドがありますが、9i にはありません。使用している Oracle Server のバージョンは何ですか?

于 2009-09-07T13:19:27.517 に答える
1

また補助金出たみたい

GRANT EXECUTE ON SYS.aq$_jms_stream_message To <your-user>;

行う:

desc sys.aq$_jms_stream_message

SYS + スキーマの両方から SQL*Plus で作業しますか?

SYS.AQ$_JMS_STREAM_MESSAGE はデータベース オブジェクト/タイプであり、SYS.DBMS_AQ はパッケージであることに注意してください。

編集

わかりました...おそらくTYPE本体が欠落しているか無効です。とは:

SELECT owner, object_name, object_type, status
FROM   dba_OBJECTS
WHERE  OBJECT_NAME = 'AQ$_JMS_STREAM_MESSAGE'

戻る?

于 2009-09-07T11:41:39.880 に答える