關於基本 Oracle 資料類型
本主題描述 Microsoft BizTalk Adapter for Oracle Database 如何呈現基本的 Oracle 資料類型。
支援的 Oracle 資料類型
Microsoft BizTalk Adapter for Oracle Database 支援某些 Oracle 資料類型的安全輸入。 啟用安全輸入時,這些資料類型會以字串表示。 您可以設定 EnableSafeTyping 系結屬性來設定安全輸入。 預設會停用安全輸入。 如需 Oracle 資料庫配接器系結屬性的詳細資訊,請參閱 閱讀 Oracle 資料庫配接器系結屬性。
注意
如果資料類型位於使用者定義類型內, (UDT) ,則不支援安全輸入。
下表顯示 Oracle 資料類型如何以停用安全類型呈現, (EnableSafeTyping 為 false) 。 受 EnableSafeTyping系結屬性影響的 Oracle 資料類型會標示星號 (*) 。
Oracle 資料類型 | XSD 類型 | .NET 類型 | 註解 |
---|---|---|---|
BFile | input:xsd:string output:xsd:base64Binary |
字串 Byte[] |
複雜類型 (不支援 BFile 資料類型,例如 RecordType、TableType、UDT 和 VArray) 。 |
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 例外狀況,並顯示指出欄位的訊息。 |
浮動** | xsd:float if prec < =7 xsd:double if prec > 7 and < =15 xsd:string if prec > 15 |
Float Double String |
- |
IntervalYM | xsd:string 如果位於 UDT 內,則為 xsd:long |
字串 如果位於 UDT 內,則為 Long |
此值應該以 Oracle 原生格式表示:Year-Month;例如,「1-2」 (1 年和 2 個月) 。 |
IntervalDS | xsd:string 如果位於 UDT 內,則為 xsd:duration |
字串 如果位於 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 | 字串 | 支援資料表作業和程式。 |
數量** | 如果 prec < =28,則為 xsd:decimal xsd:string if prec > 28 |
Decimal String |
- |
NVarchar2 | xsd:string | 字串 | - |
Raw | xsd:base64Binary | Byte[] | 支援資料表作業和程式。 |
RowID | xsd:string | 字串 | - |
時間 戳* (UDT) 內沒有安全輸入 |
xsd:dateTime if prec < = 7 xsd:string if prec > 7 |
Datetime String |
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 在 UDT 內時,xsd:dateTime |
字串 在 UDT 內部的 DateTime |
UDT 外部:此值應該以NLS_TIMESTAMP_TZ_FORMAT表示。 |
十進位** | xsd:decimal if prec < =28 xsd:string if prec > 28 |
Decimal String |
- |
Varchar2 | xsd:string | 字串 | - |
二進位浮點數** | xsd:float if prec < =7 xsd:string if prec > 7 |
Float 字串 |
您必須以與地區設定一致的表單來指定值, (System.Globalization.CultureInfo.CurrentCulture) 。 例如,針對英文地區設定,請使用句號字元 ('。') 指定十進位數;針對法文地區設定,請使用逗號字元 (',') 。 |
二進位雙精度浮點數** | xsd:double if prec < =15 xsd:string if prec > 15 |
Double String |
- |
二進位整數** | xsd:integer | Int32 | 支援程式、函式和封裝。 |
Boolean | xsd:boolean | 可為 Null 的布林值 | |
XMLTYPE | xsd:string | 字串 | 支援最上層程式參數。 在 BizTalk 中開發應用程式時,以及使用 WCF 通道模型時,必須將 ''、 ' <> ' 等保留的 XML 字元取代為其實體表示 法 (< 、 >) 。 在 WCF 服務模型的情況下,不需要這樣做。 |
*這些 Oracle 資料類型呈現的方式會受到 EnableSafeTyping 系結屬性的影響。
**DataSet 和弱型別 REF CURSORS 內的這些 Oracle 數值資料類型呈現的方式會受到 EnableSafeTyping 系結屬性的影響。
重要
- Oracle Database 配接器中 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表示。 |
TimeStamp | xsd:string | 字串 | 此值應該以 Oracle NLS_TIMESTAMP_FORMAT表示。 |
重要
如果啟用安全輸入,DataSet 和弱型別 REF CURSORS 內的 Oracle 數值資料類型一律會公開為字串。
不在此資料表中的 Oracle 資料類型會以啟用或停用安全輸入的方式呈現。
驗證
Microsoft BizTalk Adapter for Oracle Database 不會對您為 Oracle 資料類型指定的值執行明確驗證。 不過,視 Oracle 資料類型而定,以及是否啟用或停用安全型別,可能會執行隱含驗證:
在訊息中傳遞的 XML 與配接器內部使用的 .NET 類型之間取消序列化時。
針對某些資料類型 ODP.NET。