可以通过 DBLink 出列吗?

发布于 2024-07-11 06:18:55 字数 550 浏览 5 评论 0原文

我正在尝试从另一台服务器上的队列中出队。 我无法使用传播将其发送到需要数据的服务器。 如果我在出队选项中的队列名称中放置 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,但我将一个包放在带有队列的服务器上。 这也是在同一侧解析的。 那么问题就变成出队的对象仅存在于该队列的服务器上。 即使我们的另一侧有一个相同的。

I'm trying to dequeue from a queue on another server. I can't use propagation to get it to the server that needs the data. If I put a dblink in the name of the queue in the dequeue options I get an error.

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

So I'm guessing that's not possible.

Instead I'll put the DEQUEUE in a package on the server WITH the queue and just call that package across the link.

Is this right?

EDIT:

Igor mentions using dynamic SQL but I put a package on the server with the queue. That too is parsed on the same side. The problem then becomes the dequeued object exists only on that queue's server. Even if we have an identical one on the opposite side.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

近箐 2024-07-18 06:18:55

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

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

You can use a DB Link to call the remote version of DBMS_SQL for dynamic SQL (or anonymous PL/SQL block), which means the statement is parsed at the remote database but as a 'local' statement.

begin dbms_sql.parse@dblink(...); end;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文