【发布时间】:2009-04-15 15:37:25
【问题描述】:
我有一些 PLSQL 代码调用远程过程以发送 XMLType。不过,它所做的是将 XMLType 分成多个 varchar2(4000) 参数,这些参数是该过程接受的。远程过程通过 DBLink 调用。
为什么必须拆分 XMLType?此限制是否适用于最新的数据库版本 (10g)?
【问题讨论】:
标签: xml database oracle plsql dblink
我有一些 PLSQL 代码调用远程过程以发送 XMLType。不过,它所做的是将 XMLType 分成多个 varchar2(4000) 参数,这些参数是该过程接受的。远程过程通过 DBLink 调用。
为什么必须拆分 XMLType?此限制是否适用于最新的数据库版本 (10g)?
【问题讨论】:
标签: xml database oracle plsql dblink
因为 sys.xmltype 是用户定义的类型。
您可能会收到 PLS-00453 - 不允许对对象表或用户定义的远程操作。
可能对所有数据库版本(包括 10g 和 11g)都有限制。
【讨论】:
在大多数情况下,Oracle 不支持处理通过数据库链接发送用户定义的类型或 LOB。 XMLType 既可以存储为 LOB 也可以存储为 UDT,并且可能以相同的方式在内存中处理,因此它不起作用是可以理解的。
This question 讨论了一般问题并提供了一些可能的解决方法。
【讨论】:
这是 Oracle 长期存在的(而且很愚蠢的)问题。
超过一定大小的 LOBS 未成功传输,您必须将大数据分块并稍后重新组合。
我不敢相信 Oracle 可以不修复这个问题,我从 Oracle 8 开始就意识到这个问题,但最近的版本可能已经修复了这个错误。
【讨论】: