本主题介绍适用于 Oracle E-Business Suite 的 Microsoft BizTalk 适配器如何呈现基本 Oracle 数据类型。
支持的 Oracle 数据类型
Oracle E-Business 适配器支持对某些 Oracle 数据类型进行安全键入。 启用安全键入后,这些数据类型表示为字符串。 通过启用 EnableSafeTyping 绑定属性来配置安全键入, (默认禁用) 。 有关 Oracle E-Business 适配器绑定属性的详细信息,请参阅阅读有关适用于 Oracle E-Business Suite 绑定属性的 BizTalk 适配器。
注意
如果数据类型位于用户定义类型 (UDT) 中,则不支持安全键入。
下表显示了在禁用安全键入的情况下如何显示 Oracle 数据类型, (EnableSafeTyping 为 false) 。 受 EnableSafeTyping 绑定属性影响的 Oracle 数据类型标有星号 (*) 。
| Oracle 数据类型 | XSD 类型 | .NET 类型 | 注释 | 
|---|---|---|---|
| BFile | input: xsd:string output: xsd:base64Binary | 字符串 Byte[] | 在 RecordType、TableType、UDT 和 VArray) 等复杂类型 (不支持 BFile 数据类型。 | 
| Blob | xsd:base64Binary | Byte[] | - | 
| Char | xsd:string | 字符串 | - | 
| Clob | xsd:string | 字符串 | - | 
| 日期* (如果在 UDT) 内,则无法安全键入 | xsd:dateTime | DateTime | 日期值不能包含 UTC 或 UTC 偏移量 (时区信息,) : - xsd:dateTime 值不得包含 UTC 或 UTC 偏移量 - DateTime.Kind 必须为 DateTimeKind.Unspecified 如果指定了时区信息,适配器将引发 XmlReaderParsingException 异常,并显示指示字段的消息。 注意: Oracle E-Business 适配器将 Oracle Date 数据类型公开为 xsd:dateTime 而不是 xsd:date,因为: 
 | 
| 浮动** | xsd:float if prec <=7 xsd:double if prec > 7 and <=15 xsd:string if prec > 15 | Float Double 字符串 | 必须指定与 MlsSettings 绑定属性下的 NumericCharacters 绑定属性中为十进制字符和组分隔符指定的格式一致的值。 如果未为 NumericCharacters 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 | 
| IntervalDS | xsd:string xsd:duration(如果位于 UDT 内) | 字符串 如果位于 UDT 内,则时间跨度 | 适配器使用 OracleIntervalDS.ToString 方法以字符串的形式返回 IntervalDS 数据。 该值应以 Oracle 本机格式表示:Day HH:MI:SSxFF (例如,“5 15:30:12.99”) 。 | 
| IntervalYM | xsd:string xsd:long 如果位于 UDT 内 | 字符串 如果在 UDT 内,则为长 | 适配器使用 OracleIntervalYM.ToString 方法以字符串的形式返回 IntervalYM 数据。 该值应以 Oracle 本机格式表示:Year-Month;例如,“1-2” (1 年 2 个月) 。 | 
| Long | xsd:string | 字符串 | 从 Oracle database 9i 版本开始,LONG 数据类型已弃用。 Oracle 建议改用大型对象 (LOB) 数据类型。 因此,在使用 Oracle 数据库适配器对 Oracle 数据库执行操作时,建议使用对 LOB 数据类型而不是 LONG 数据类型进行操作的 Oracle 数据库项目。 | 
| LongRaw | xsd:base64Binary | Byte[] | - | 
| NChar | xsd:string | 字符串 | - | 
| NClob | xsd:string | 字符串 | |
| 数量** | xsd:decimal(如果 prec <=28) xsd:string if prec > 28 | 小数 String | - | 
| NVarchar2 | xsd:string | 字符串 | - | 
| 原始 | xsd:base64Binary | Byte[] | |
| RowID | xsd:string | 字符串 | - | 
| 时间 戳* (如果在 UDT) 内,则无法安全键入 | xsd:dateTime(如果 prec = 7)< xsd:string if prec > 7 | DateTime 字符串 | 当以字符串 (prec > 7) 公开时,该值应以 Oracle NLS_TIMESTAMP_FORMAT表示。 可以在 MlsSettings 绑定属性下的 TimeStampFormat 绑定属性中为 TimeStamp 数据类型指定字符串格式。 如果未为 TimeStampFormat 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 TimeStamp 值不能包含 UTC 或 UTC 偏移量 (时区信息) : - xsd:dateTime 值不得包含 UTC 或 UTC 偏移量 - DateTime.Kind 必须为 DateTimeKind.Unspecified 如果指定了时区信息,适配器将引发 XmlReaderParsingException 异常,并显示指示字段的消息。 | 
| TimeStampLTZ | xsd:string | 字符串 | UDT 中不支持 TimeStampLTZ。 在 UDT 外部:值应以 Oracle NLS_TIMESTAMP_TZ_FORMAT表示。 可以在 MlsSettings 绑定属性下的 TimeStampTZFormat 绑定属性中为 TimeStampLTZ 数据类型指定字符串格式。 如果未为 TimeStampTZFormat 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 | 
| TimeStampTZ | xsd:string xsd:dateTime(如果位于 UDT 内) | 字符串 如果位于 UDT 内,则为 DateTime | 在 UDT 外部:值应以 Oracle NLS_TIMESTAMP_TZ_FORMAT表示。 可以在 MlsSettings 绑定属性下的 TimeStampTZFormat 绑定属性中为 TimeStampTZ 数据类型指定字符串格式。 如果未为 TimeStampTZFormat 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 | 
| 十进制** | xsd:decimal(如果 prec <=28) xsd:string if prec > 28 | 小数 String | - | 
| Varchar2 | xsd:string | 字符串 | - | 
| 二进制浮点数** | xsd:float if prec <=7 xsd:string if prec > 7 | Float String | 必须指定与 MlsSettings 绑定属性下的 NumericCharacters 绑定属性中为十进制字符和组分隔符指定的格式一致的值。 如果未为 NumericCharacters 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 | 
| 二进制双精度** | xsd:double if prec <=15 xsd:string if prec > 15 | Double 字符串 | - | 
| 二进制整数** | xsd:integer | Int32 | |
| Boolean | xsd:boolean | 可以为 Null 的布尔值 | |
| XMLTYPE | xsd:string | 字符串 | 支持顶级过程参数。 在 BizTalk 中开发应用程序以及使用 WCF 通道模型时,必须将保留的 XML 字符(如“<”、“”>)替换为其实体表示形式 (<> 、) 。 对于 WCF 服务模型,这不是必需的。 | 
*这些 Oracle 数据类型的显示方式受 EnableSafeTyping 绑定属性的影响。
**这些 Oracle 数值数据类型在 DataSet 和弱类型 REF CURSORS 中的显示方式受 EnableSafeTyping 绑定属性的影响。
重要
- Oracle 电子商务适配器中 Oracle 数据类型中值的最大长度受 Oracle 数据类型 ODP.NET 支持的最大长度约束。
- Oracle E-Business 适配器在内部将 UDT 中的 Oracle 数字数据类型视为 .NET Decimal。 但是,通常, (UDT) 外部,Oracle 电子商务适配器在内部将 Oracle 数值数据类型视为 OracleDecimal。
 
已启用安全键入
下表显示了 当 EnableSafeTyping 绑定属性 为 true 时,如何更改受安全键入影响的 Oracle 数据类型。
注意
不在此表中的 Oracle 数据类型的显示方式与启用或禁用安全键入的方式相同。
| Oracle 数据类型 | XSD 类型 | .NET 类型 | 评论 | 
|---|---|---|---|
| 日期 | xsd:string | 字符串 | 该值应以 Oracle NLS_DATE_FORMAT表示。 可以在 MlsSettings 绑定属性下的 DateFormat 绑定属性中指定 Date 数据类型的格式。 如果未为 DateFormat 绑定属性指定任何值,则适配器将使用安装适配器的同一计算机上的 ODP.NET 客户端的 MLS 设置。 | 
| 时间戳 | xsd:string | 字符串 | 该值应以 Oracle NLS_TIMESTAMP_FORMAT表示。 可以在 MlsSettings 绑定属性下的 TimeStampFormat 绑定属性中为 TimeStamp 数据类型指定字符串格式。 如果未为 TimeStampFormat 绑定属性指定任何值,则适配器在安装适配器的同一台计算机上使用 ODP.NET 客户端的 MLS 设置。 | 
重要
如果启用了安全键入,则 DataSets 中的 Oracle 数值数据类型和弱类型 REF CURSORS 始终以字符串形式公开。
验证
Oracle E-Business 适配器不对为 Oracle 数据类型指定的值执行显式验证。 但是,根据 Oracle 数据类型以及是启用还是禁用安全键入,可以执行隐式验证:
- 在消息中传递的 XML 与适配器在内部使用的 .NET 类型之间进行反序列化时。 
- 通过 ODP.NET 某些数据类型。