以下は、キューにデータをエンキューする手順です。手順の実行中にコンパイルエラーが発生し、どこが間違っているのかわかりません。解決策を教えてください。
CREATE OR REPLACE PROCEDURE p_enqueue(msg IN VARCHAR2)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
BEGIN
dbms_aq.enqueue( queue_name => 'example_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message_type(msg),
msgid => message_handle);
COMMIT;
END;
エラー:
PLS-00201: 識別子'DBMS_AQ'を宣言する必要があります
PLS-00320: この式の型の宣言が不完全であるか、形式が正しくありません
付与権限を使用しようとすると、次のエラーが発生します
エラー ORA-01031: 権限が不十分です
それが問題である場合、以下の pl/sql ブロックを実行してメッセージをエンキューすると、プロシージャが正常に作成されました。権限がない場合はどうすればよいですか?
DECLARE
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message message_typ;
BEGIN
message := message_typ('NORMAL MESSAGE',
'enqueued to msg_queue first.');
dbms_aq.enqueue(queue_name => 'msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
end;