本主题介绍用于 Oracle 数据库的 Microsoft BizTalk 适配器如何显示基本的 Oracle 数据类型。
支持的 Oracle 数据类型
适用于 Oracle 数据库的 Microsoft BizTalk 适配器支持某些 Oracle 数据类型的安全键入。 启用安全键入后,这些数据类型将表示为字符串。 通过设置 EnableSafeTyping 绑定属性来配置安全键入。 默认情况下禁用安全键入。 有关 Oracle 数据库适配器绑定属性的详细信息,请参阅 有关 Oracle 数据库适配器绑定属性的信息。
注释
如果数据类型位于用户定义的类型(UDT)内,则不支持安全键入。
下表显示了如何在禁用安全键入的情况下显示 Oracle 数据类型(EnableSafeTyping 为 false)。 受 EnableSafeTyping 绑定属性影响的 Oracle 数据类型标记为星号 \。
Oracle 数据类型 | XSD 类型 | .NET 类型 | 注释 |
---|---|---|---|
BFile | 输入:xsd:string output: xsd:base64Binary |
字符串 Byte[] |
复杂类型(如 RecordType、TableType、UDT 和 VArray)不支持 BFile 数据类型。 |
团块 | xsd:base64Binary | Byte[] | 支持表操作和过程。 |
煳 | xsd:string | 字符串 | 支持进行表操作和过程。 |
Clob | xsd:string | 字符串 | 支持表操作和过程。 |
日期* (如果 UDT 内部没有安全键入) |
xsd:dateTime | 日期时间 | 日期值不能包含时区信息(UTC 或 UTC 偏移量): - xsd:dateTime 值不能包含 UTC 或 UTC 偏移量 - DateTime.Kind 必须是 DateTimeKind.Unspecified 如果指定时区信息,适配器将引发 XmlReaderParsingException 异常,并显示指示字段的消息。 |
浮动 | xsd:float(如果 prec <=7) xsd:double(如果 prec > 7 和 <=15) xsd:string if prec > 15 |
漂浮 加倍 字符串 |
- |
IntervalYM | xsd:string xsd:long(如果位于 UDT 内) |
字符串 如果位于 UDT 内部,则为 Long |
该值应以 Oracle 本机格式表示:Year-Month;例如,“1-2”(1 年和 2 个月)。 |
IntervalDS | xsd:string xsd:duration(如果位于 UDT 内) |
字符串 如果位于一个 UDT 内部,则时间跨度 |
该值应以 Oracle 本机格式表示:Day HH:MI:SSxFF;例如,“5 15:30:12.99” |
长整型 | xsd:string | 字符串 | 支持所有表操作、存储过程和函数。 注意: 从 Oracle 数据库 9i 版本开始,LONG 数据类型已弃用。 Oracle 建议改用 LOB 数据类型。 因此,在使用 Oracle 数据库适配器对 Oracle 数据库执行操作时,我们建议使用对 LOB 数据类型进行操作的 Oracle 数据库工件,而不是使用 LONG 数据类型。 |
LongRaw | xsd:base64Binary | Byte[] | - |
NChar | xsd:string | 字符串 | - |
NClob | xsd:string | 字符串 | 支持表格操作和过程。 |
数** | xsd:decimal(如果 prec <=28) xsd:string if prec > 28 |
十进制 字符串 |
- |
NVarchar2 | xsd:string | 字符串 | - |
原始 | xsd:base64Binary | Byte[] | 支持表操作及过程。 |
RowID | xsd:string | 字符串 | - |
时间戳* (如果 UDT 内部没有安全键入) |
xsd:dateTime(如果 prec <= 7) xsd:string(如果 prec > 7) |
日期时间 字符串 |
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 内) |
字符串 DateTime(如果位于一个UDT中) |
在 UDT 外部:值应以NLS_TIMESTAMP_TZ_FORMAT表示。 |
十进制** | xsd:decimal(如果 prec <=28) xsd:string if prec > 28 |
十进制 字符串 |
- |
Varchar2 | xsd:string | 字符串 | - |
二进制浮点数** | xsd:float(如果 prec <=7) xsd:string(如果 prec > 7) |
漂浮 字符串 |
必须以与区域设置(System.Globalization.CultureInfo.CurrentCulture)一致的形式指定值。 例如,对于英语区域设置,请使用句点字符 ('.') 指定十进制;对于法语区域设置,请使用逗号字符(',')。 |
二进制双精度** | xsd:double(如果 prec <=15) xsd:string if prec > 15 |
加倍 字符串 |
- |
二进制整数** | xsd:integer | Int32 | 支持过程、函数和包。 |
布尔型 | xsd:boolean | 可为 Null 的布尔值 | |
XML类型 | xsd:string | 字符串 | 支持顶级过程参数。 在 BizTalk 中开发应用程序以及使用 WCF 通道模型时,必须将保留的 XML 字符(如“<”、“>”)替换为其实体表示形式(<、>)。 在 WCF 服务模型的情况下,不需要这样做。 |
*这些 Oracle 数据类型的显示方式受 EnableSafeTyping 绑定属性的影响。
**DataSet 和弱类型 REF CURSORS 中的这些 Oracle 数值数据类型的显示方式受 EnableSafeTyping 绑定属性的影响。
重要
- Oracle 数据库适配器中的 Oracle 数据类型的值的最大长度受 ODP.NET 对该数据类型支持的值的最大长度的限制。
- Oracle 数据库适配器在内部将 UDT 中的 Oracle 数值数据类型视为 .NET Decimal。 但是,通常情况下(即在 UDT之外),Oracle数据库适配器会在内部将 Oracle 数值数据类型视为 OracleDecimal。
已启用安全键入
下表显示了 EnableSafeTyping 绑定属性为 true 时,受安全键入影响的 Oracle 数据类型是如何变化的。
Oracle 数据类型 | XSD 类型 | .NET 类型 | 注释 |
---|---|---|---|
日期 | xsd:string | 字符串 | 该值应在 Oracle NLS_DATE_FORMAT中表示。 |
时间戳 | xsd:string | 字符串 | 该值应在 Oracle NLS_TIMESTAMP_FORMAT中表示。 |
重要
如果启用了安全键入,DataSet 和弱类型 REF CURSORS 中的 Oracle 数值数据类型始终以字符串形式公开。
此表中未显示的 Oracle 数据类型与启用或禁用安全键入的方式相同。
验证
适用于 Oracle 数据库的 Microsoft BizTalk 适配器对为 Oracle 数据类型指定的值不执行显式验证。 但是,根据 Oracle 数据类型以及是否启用或禁用安全键入,可以执行隐式验证:
在消息中传递的 XML 与适配器内部使用的 .NET 类型之间进行反序列化时。
由ODP.NET处理某些数据类型。