Можете ли вы удалить из очереди через DBLink? - PullRequest
0 голосов
/ 17 декабря 2008

Я пытаюсь вывести очередь из очереди на другом сервере. Я не могу использовать распространение, чтобы получить его на сервер, который нуждается в данных. Если я добавлю dblink в имя очереди в опциях dequeue, я получу ошибку.

Error at line 9
ORA-25200: invalid value prim_queues.prim_trade_q@prim_dbln, QUEUE_NAME should be [SCHEMA.]NAME
ORA-06512: at "SYS.DBMS_AQ", line 619
ORA-06512: at "PSINET_AQ.AQ_INBOUND_TRADES_PKG", line 20
ORA-06512: at line 10

Так что я предполагаю, что это невозможно.

Вместо этого я помещу DEQUEUE в пакет на сервере с очередью и просто вызову этот пакет по ссылке.

Это правильно?

EDIT:

Игорь упоминает об использовании динамического SQL, но я помещаю пакет на сервер с очередью. Это тоже анализируется с той же стороны. Проблема становится то, что удаленный объект существует только на сервере этой очереди. Даже если у нас есть идентичный на противоположной стороне.

1 Ответ

1 голос
/ 18 декабря 2008

Вы можете использовать ссылку DB для вызова удаленной версии DBMS_SQL для динамического SQL (или анонимного блока PL / SQL), что означает, что оператор анализируется в удаленной базе данных, но как «локальный» оператор.

begin dbms_sql.parse@dblink (...); конец;

...