你可以通过 DBLink 出列吗?

Posted

技术标签:

【中文标题】你可以通过 DBLink 出列吗?【英文标题】:Can you dequeue over a DBLink? 【发布时间】:2008-12-17 19:41:37 【问题描述】:

我正在尝试从另一台服务器上的队列中出列。我无法使用传播将其发送到需要数据的服务器。如果我在出队选项中的队列名称中放置一个 dblink,则会出现错误。

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 放在服务器上的一个包中,并通过链接调用该包。

是这样吗?

编辑:

Igor 提到使用动态 SQL,但我在服务器上放置了一个包和队列。这也是在同一侧解析的。然后问题变成出队对象仅存在于该队列的服务器上。即使我们在对面有一个相同的人。

【问题讨论】:

【参考方案1】:

您可以使用 DB 链接为动态 SQL(或匿名 PL/SQL 块)调用远程版本的 DBMS_SQL,这意味着该语句在远程数据库中被解析为“本地”语句。

开始 dbms_sql.parse@dblink(...);结束;

【讨论】:

但是如何将对象拉回来?我排队一个类型。似乎无法通过 dblink 获取类型。

以上是关于你可以通过 DBLink 出列吗?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中的Dblink和同义词有啥区别吗

Oracle使用dblink连接SqlServer

Oracle使用dblink连接SqlServer

如何通过 DBLINK 通过 DBLINK 调用 SELECT?

如何解决dblink过多的问题

mybatis会自动释放dblink连接吗