Plsql Oracle高级队列:从另一个数据库访问队列并退出队列
为了简单起见,我在数据库a中有一个队列。在数据库B中有一个包和代码。代码实际上只是一个巨大的出列,它将队列中的消息出列,并处理数据。我知道如果是一张桌子,我只会选择。。从…起tablename@databaselink. 但是我想运行dequeue函数,让它从队列中退出。任何帮助都会很棒 我可以对消息执行@dblink来调用来自另一个DB的消息,将我的消息设置为为为队列创建的消息,但我不确定如何在开始部分调用实际队列并将其出列Plsql Oracle高级队列:从另一个数据库访问队列并退出队列,plsql,queue,Plsql,Queue,为了简单起见,我在数据库a中有一个队列。在数据库B中有一个包和代码。代码实际上只是一个巨大的出列,它将队列中的消息出列,并处理数据。我知道如果是一张桌子,我只会选择。。从…起tablename@databaselink. 但是我想运行dequeue函数,让它从队列中退出。任何帮助都会很棒 我可以对消息执行@dblink来调用来自另一个DB的消息,将我的消息设置为为为队列创建的消息,但我不确定如何在开始部分调用实际队列并将其出列 DECLARE dequeue_options dbm
DECLARE
dequeue_options dbms_aq.dequeue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message user.message;
BEGIN
DBMS_AQ.DEQUEUE(queue_name => 'queue_name',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
如果我是您,我会在远程数据库上创建一个包来处理出队列、入队列等操作,并将在该包上执行的权限授予本地数据库所连接的模式 然后在本地数据库上,您可以执行以下操作:
package_name.dequeue_proc@remote_db (queue_name => 'QUEUE_NAME',
...);
如果你不能做到这一点,那么以下几点应该是有效的:
DBMS_AQ.DEQUEUE@remote_db (queue_name => 'QUEUE_NAME',
...);