【发布时间】:2014-05-21 08:26:46
【问题描述】:
我试图通过 DB 链接传递引用类型,但收到错误消息,告诉我它在过程中对 DB 链接的引用是非法的。我已经在包的正文和规格中指定了它,但在搜索解决方案后不确定如何解决它。我正在使用 oracle 10g 作为 11g oracle DB 的引用类型。
版本: Oracle 数据库 11g 企业版 11.2.0.3.0 版
Oracle 数据库 10g 企业版 10.2.0.5.0 版
[Error] PLS-00331 (13: 43): PLS-00331: illegal reference to test.DATA_T@TESTDB('PARAMETERS')
这似乎是包装规范中的一个问题:
PROCEDURE SendCollection(o_data IN OUT data_t@TESTDB,
o_seq IN OUT seq_t@TESTDB,
i_flag IN CHAR);
我认为以上是正确的,欢迎任何指点和建议
【问题讨论】:
-
上次我看了,我不相信这是可能的。如果可能的话,它很可能是高度依赖于版本的,所以你真的想指定你正在使用的 Oracle 的精确版本。
-
我也不认为这是可能的,因为您的本地实例无法知道远程类型是否被修改或删除;它需要能够使您的过程无效,然后在使用时重新编译它。 It isn't specifically listed as a restriction though.
-
按推荐添加,oracle 版本:oracle (10g) 是传递引用类型的地方,oracle (11g) 也是传递它的地方
-
你 100% 确定这是不可能的吗?奇怪的是它也没有在那里列出
-
不,不是 100%,但我不认为它可以做到,错误表明它是不允许的。但是错误似乎并不指向声明;传递
'PARAMETERS'的代码是什么,远程数据库上的类型是如何定义的?也许一个小的测试用例会有所帮助。