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