oracle用户被关联的dblink,通过DBLINK引用Oracle用户定义的类型?

我在两个不同的Oracle实例上使用两个不同的Oracle模式.我已经定义了几种类型和类型集合来在这些模式之间传输数据.我遇到的问题是,即使类型具有完全相同的定义(用于在模式中创建两个集的相同脚本),Oracle将它们视为不可互换的不同对象.

我想将传入的远程类型对象转换为相同的本地类型,但是我得到一个关于跨dblinks引用类型的错误.

基本上,我正在做以下事情:

DECLARE

MyType LocalType; -- note,same definition as the RemoteType (same script)

BEGIN

REMOTE_SCHEMA.PACKAGE.PROCEDURE@DBLINK( MyType ); -- MyType is an OUT param

LOCAL_SCHEMA.PACKAGE.PROCEDURE( MyType ); -- IN param

END;

这失败是因为REMOTE过程调用无法理解MyType,因为它将LocalType和RemoteType视为不同的对象类型.

我也尝试了DECLARING MyType,如下所示:

MyType REMOTE_SCHEMA.RemoteType@DBLINK;

但我得到另一个关于跨dblinks引用类型的错误.类型之间的CASTing也不起作用,因为为了进行强制转换,我需要跨dblink引用远程类型 – 同样的问题,同样的错误.我也尝试使用SYS.ANYDATA作为在两个实例之间穿过的对象,但它得到了类似的错误.

有任何想法吗?

更新:

尝试使用相同的OID(使用SYS_OP_GUID()手动检索)声明DBLINK两侧的对象类型,但Oracle仍然“看到”两个对象不同并抛出“错误数量或类型的争论”错误.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值