你可以通过 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 出列吗?的主要内容,如果未能解决你的问题,请参考以下文章