基本 Oracle 数据类型

本主题介绍适用于 Oracle E-Business Suite 的 Microsoft BizTalk 适配器如何呈现基本 Oracle 数据类型。

支持的 Oracle 数据类型

Oracle E-Business 适配器支持对某些 Oracle 数据类型进行安全键入。 启用安全键入后,这些数据类型表示为字符串。 通过启用 EnableSafeTyping 绑定属性来配置安全键入, (默认禁用) 。 有关 Oracle E-Business 适配器绑定属性的详细信息,请参阅阅读有关适用于 Oracle E-Business Suite 绑定属性的 BizTalk 适配器。

注意

如果数据类型位于用户定义类型 (UDT) 中,则不支持安全键入。

下表显示了在禁用安全键入的情况下如何显示 Oracle 数据类型, (EnableSafeTypingfalse) 。 受 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,因为:
  • Oracle Date 数据类型还可以包含时间值。
  • xsd:date 没有 .NET 等效项。
浮动** 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 某些数据类型。

另请参阅

用于 Oracle E-Business Suite 的 BizTalk 适配器的消息和消息架构