适用于 Oracle 数据库的 BizTalk 适配器的限制
常规
以下是适用于 Oracle 数据库的 Microsoft BizTalk 适配器的已知限制:
除某些异常外,Oracle 数据库适配器与以前版本的适配器兼容。 有关自上一版本以来发生的更改列表,请参阅 BizTalk Adapter for Oracle Database 中的主要功能。
SQLEXECUTE 操作不会向过程、函数或包返回 OUT 或 IN OUT 参数的值。 因此,必须使用 Oracle 数据库适配器为这些 Oracle 项目公开的专用操作来调用过程、函数和包。
使用代理编程从 Oracle 数据库检索数据时,Oracle 数据库适配器不会反序列化节点数超过 65536 的 XML 消息。 确保响应消息的节点小于或等于 65536。 可以通过修改应用程序的 app.config 文件来绕过此限制。 有关说明,请参阅 排查 Oracle 数据库适配器的操作问题。
Oracle 数据库适配器采用输入字符串并构造 SQL 命令,然后由适配器执行。 但是,输入字符串可能包含其他 SQL 命令,这些命令也会执行,并且可能会破坏操作协定。
假设适配器向存储过程提供输入 REF CURSOR。 在这种情况下,适配器客户端必须提供一个命令,在执行时获取 REF CURSOR。 然后,适配器将 REF CURSOR 传递给存储过程。 但是,如果用于获取 REF CURSOR 的命令对数据库执行一些其他修改,则执行存储过程的操作协定将中断。
Oracle 数据库适配器仅支持最多两个级别的 UDT 嵌套。
将适配器与 BizTalk Server 配合使用时,如果 WCF 自定义发送端口上的凭据不正确,则不会处理请求消息。 指定正确的凭据后,消息将发送到 Oracle 数据库,并收到响应。 但是,响应消息对输出端口不可用。 在这种情况下,可能需要重启主机实例。
Oracle 数据库适配器不支持复杂类型中的 BFILE 数据类型, (例如 RECORD 类型、TABLE 类型、UDT 和 VARRAY) 。
Oracle 数据库适配器不支持 User-Defined 类型 (具有循环引用的 UDT) 。
Oracle 数据库适配器不支持包含类型为 RECORD 的 PL/SQL 表的字段的记录。
Oracle 数据库适配器不允许客户端将 VARRAY 中第一个元素的值设置为 NULL。
除 PL/SQL 表外,Oracle 数据库适配器不支持在包中定义的 UDT。
由于 ODP.NET 的限制
由于 ODP.NET 的限制,Oracle 数据库适配器存在以下已知限制:
对于采用十进制值的 Oracle 数据类型,如果输入值包含字母字符,ODP.NET 不会引发异常。 由于 Oracle 数据库适配器使用 ODP.NET 与 Oracle 数据库进行交互,因此适配器在传递字母字符时也不会引发异常。 例如:
为插入操作传递值“54r”不会引发异常;将改为插入值“54”。
为插入操作传递值“r54”不会引发异常;将改为插入值“0”。
由于 ODP.NET 限制,Oracle 数据库适配器不支持使用使用强类型和弱类型 REF CURSORS 的重载过程。 在内部,适配器将强类型化和弱类型 REF CURSORS 视为 REF CURSORS。
Oracle 数据库适配器不支持未按数字字段编制索引的 PL/SQL 表。
Oracle 数据库适配器不支持不包含任何元素的关联数组。
Oracle 数据库适配器不支持包含具有本地时区属性的 TimeStamp 数据类型的 UDT (TimeStampLTZ) 。
Oracle 数据库适配器不支持包含“.”的 UDT (名称中) 句点。
Oracle 数据库适配器不支持将 BLOB、CLOB 和 NCLOB 数据类型作为 IN OUT 参数的 UDT。
Oracle 数据库适配器不支持以下简单类型的 Varray:BFILE、IntervalDS、IntervalYM、TimeStampLTZ 和 TimeStampTZ。
由于关联数组的限制,Oracle 数据库适配器不支持 PL/SQL 表或包含以下任何数据类型的记录的 PL/SQL 表:
BFILE
BLOB
CLOB
IntervalDS
IntervalYM
Long
NCLOB
RowID
时间戳
TimeStampLTZ
TimeStampTZ