Oracle 11g.У меня есть триггер, который вызывает процедуру.Эта процедура выполняет очередь и очередь.Когда я запускаю процедуру в sqldeveloper, она работает нормально.Если я обновлю таблицы, из которых срабатывает триггер, процедура будет работать нормально.Если я вхожу в рассматриваемое приложение и запускаю процесс, который вызывает срабатывание триггера, процедура не работает.В частности, очередь и очередь не работают, потому что, если я удаляю код очереди / очереди и вместо этого вставляю таблицу, процедура выполняется нормально.
Так что я думаю, что, возможно, есть проблема с разрешениямив результате чего триггер не может выполняться на dbms_aq.Кто-нибудь знает, как решить эту проблему?Есть ли учетная запись пользователя, которая запускает триггеры, которым необходимо предоставить привилегии?
Я не думаю, что проблема в процедуре, потому что она работает нормально.Я также не передаю динамические данные из триггера, поэтому способ запуска процедуры в sqldeveloper точно такой же, как триггер вызывает процедуру.
Примечание: очищенный код
create or replace
TRIGGER mytrig
AFTER INSERT ON INVENTORY_TRANSACTION
FOR EACH ROW
WHEN ((NEW.CLIENT = 'abcwidgets') AND (NEW.CODE = 'Receipt'))
BEGIN
dschema.mypack.queue_receipt('abcwidgets','999','bbb','1','88');
EXCEPTION
WHEN OTHERS THEN NULL;
END;
PROCEDURE QUEUE_RECEIPT(
CLIENTID IN VARCHAR2
, RECEIPTID IN VARCHAR2
, SITEID IN VARCHAR2
, LINEID IN VARCHAR2
, UPDATE_QTY IN VARCHAR2
) AS
ctxHandle dbms_xmlgen.ctxHandle;
l_xml xmltype;
queueopts DBMS_AQ.ENQUEUE_OPTIONS_T;
msgprops DBMS_AQ.MESSAGE_PROPERTIES_T;
msgid RAW(16);
BEGIN
ctxHandle := dbms_xmlgen.newContext('SELECT line_id,
user_data_4
FROM inventory
');
l_xml := xmltype(dbms_xmlgen.getxml(ctxHandle));
DBMS_AQ.ENQUEUE ('DSCHEMA.ABCWIDGETS_QUEUE',
queueopts,
msgprops,
l_xml,
msgid);
END QUEUE_RECEIPT;