关于基本 Oracle 数据类型

本主题介绍适用于 Oracle 数据库的 Microsoft BizTalk 适配器如何显示基本 Oracle 数据类型。

支持的 Oracle 数据类型

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

注意

如果数据类型位于用户定义类型 (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 异常,并显示指示 字段的消息。
浮动** 如果 prec <=7,则为 xsd:float
如果 prec > 7 和 =15, <则为 xsd:double
xsd:string if prec > 15
Float
Double
字符串
-
IntervalYM xsd:string

xsd:long 如果位于 UDT 内
字符串

如果在 UDT 内,则为长
该值应以 Oracle 本机格式表示:Year-Month;例如,“1-2” (1 年 2 个月) 。
IntervalDS xsd:string

xsd:duration(如果位于 UDT 内)
字符串

如果在 UDT 内,则为时间跨度
该值应以 Oracle 本机格式表示:Day HH:MI:SSxFF;例如,“5 15:30:12.99”
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
字符串
TimeStamp 值不能包含 utc 或 UTC 偏移量 (时区信息,) :

- xsd:dateTime 值不得包含 UTC 或 UTC 偏移量
- DateTime.Kind 必须为 DateTimeKind.Unspecified

如果指定了时区信息,适配器将引发 XmlReaderParsingException 异常,并显示指示 字段的消息。
TimeStampLTZ xsd:string 字符串 UDT 中不支持 TimeStampLTZ。

在 UDT 外部:值应以NLS_TIMESTAMP_TZ_FORMAT表示。
TimeStampTZ xsd:string

xsd:dateTime(如果位于 UDT 内)
字符串

如果位于 UDT 内,则为 DateTime
在 UDT 外部:值应以NLS_TIMESTAMP_TZ_FORMAT表示。
十进制** xsd:decimal(如果 prec <=28)
xsd:string if prec > 28
小数
String
-
Varchar2 xsd:string 字符串 -
二进制浮点数** 如果 prec <=7,则为 xsd:float
xsd:string if prec > 7
Float
String
必须以与 System.Globalization.CultureInfo.CurrentCulture () 的区域设置一致的格式指定值。 例如,对于英语区域设置,请使用句点字符 ('。) 指定小数;对于法语区域设置,请使用逗号字符 (',') 。
二进制双精度** 如果 prec <=15,则为 xsd:double
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 数据库适配器在内部将 UDT 中的 Oracle 数字数据类型视为 .NET 十进制。 但是,通常 (UDT) 外部,Oracle 数据库适配器在内部将 Oracle 数字数据类型视为 OracleDecimal。

启用安全键入

下表显示了当 EnableSafeTyping 绑定属性为 true 时,如何更改受安全键入影响的 Oracle 数据类型。

Oracle 数据类型 XSD 类型 .NET 类型 评论
日期 xsd:string 字符串 该值应以 Oracle NLS_DATE_FORMAT表示。
时间戳 xsd:string 字符串 该值应以 Oracle NLS_TIMESTAMP_FORMAT表示。

重要

如果启用了安全键入,DataSets 中的 Oracle 数字数据类型和弱类型 REF CURSORS 始终以字符串的形式公开。

不在此表中的 Oracle 数据类型的显示方式与启用还是禁用安全键入的方式相同。

验证

适用于 Oracle 数据库的 Microsoft BizTalk 适配器不会对为 Oracle 数据类型指定的值执行显式验证。 但是,根据 Oracle 数据类型以及是启用还是禁用安全类型,可以执行隐式验证:

  • 在消息中传递的 XML 与适配器内部使用的 .NET 类型之间进行反序列化时。

  • 通过 ODP.NET 某些数据类型。