Возможный дубликат:
PL Функция / SQL в Oracle не может видеть DBMS_AQ
Ниже приведена моя процедура постановки данных в очередь. Во время выполнения процедуры я получаю ошибки компиляции, я не могу найти, где я ошибся. Пожалуйста, помогите мне с решением.
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;