关于基本 Oracle 数据类型

本主题介绍 Microsoft BizTalk Adapter for Oracle 数据库如何呈现基本的 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 异常,并显示指示字段的消息。
Float** xsd:float if prec <=7
xsd:double 如果 prec > 7 和 <=15
xsd:string if prec > 15
Float
Double
字符串
-
IntervalYM xsd:string

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

如果在 UDT 内部,则为 Long
该值应以 Oracle 本机格式表示:年月;例如,“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 数据库 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 字符串 -
TimeStamp*

(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 内)
UDT 外部:该值应以NLS_TIMESTAMP_TZ_FORMAT表示。
Decimal** 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
必须以与 System.Globalization.CultureInfo.CurrentCulture () 一致的格式指定值。 例如,对于英语区域设置,请使用句点字符 ('。) 指定小数;对于法语区域设置,请使用逗号字符 (',') 。
二进制双精度** xsd:double if prec <=15
xsd:string if prec > 15
Double
字符串
-
二进制整数** xsd:integer Int32 支持过程、函数和包。
Boolean xsd:boolean 可为 Null 的布尔值
XMLTYPE xsd:string 字符串 支持顶级过程参数。

保留的 XML 字符(如“”、“<>)必须替换为其实体表示形式 (<、 > 在 BizTalk 中开发应用程序时以及使用 WCF 通道模型时) 。 如果 WCF 服务模型,则不需要这样做。

*显示这些 Oracle 数据类型的方式受 EnableSafeTyping 绑定属性的影响。

**DataSet 和弱类型 REF CURSORS 中的这些 Oracle 数值数据类型的显示方式受 EnableSafeTyping 绑定属性的影响。

重要

  • Oracle 数据库适配器中 Oracle 数据类型中值的最大长度由 Oracle 数据类型 ODP.NET 支持的值的最大长度绑定。
    • Oracle 数据库适配器在内部将 UDT 中的 Oracle 数值数据类型视为 .NET Decimal。 但是,通常 (UDT 外部) ,Oracle 数据库适配器在内部将 Oracle 数字数据类型视为 OracleDecimal。

保险箱键入已启用

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

Oracle 数据类型 XSD 类型 .NET 类型 注释
Date xsd:string 字符串 该值应在 Oracle NLS_DATE_FORMAT中表示。
时间戳 xsd:string 字符串 该值应在 Oracle NLS_TIMESTAMP_FORMAT中表示。

重要

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

不在此表中的 Oracle 数据类型以启用或禁用安全键入的方式显示。

验证

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

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

  • 对于某些数据类型,ODP.NET。