OracleLob.SetLength(Int64) 方法

定義

OracleLob 資料流的長度設定為小於目前長度的值。

public:
 override void SetLength(long value);
public override void SetLength (long value);
override this.SetLength : int64 -> unit
Public Overrides Sub SetLength (value As Long)

參數

value
Int64

目前 OracleLob 資料流所需位元組長度。 對 CLOBNCLOB 資料型別而言,這必須是偶數。

例外狀況

CLOBNCLOB 資料型別的 value 參數中指定的值不是偶數。

-或-

value 參數中所指定的值小於零,或是大於 4 GB。

作業不在交易中、OracleLob 物件為 null,或是連接已關閉。

物件已關閉或處置。

發生 Oracle 錯誤。

備註

嘗試增加數據流的 OracleLob 長度失敗,並從 Oracle 伺服器傳回「訊息:ORA-22926:指定的修剪長度大於目前的 LOB 值長度」。

數據流必須同時支援撰寫和搜尋 SetLength to函式。

.NET Framework Data Provider for Oracle 會將所有數據CLOBNCLOB處理為 Unicode。 因此,存取 CLOBNCLOB 數據類型時,您一律會處理位元組數目,其中每個字元都是 2 個字節。 例如,如果包含三個字元的文字字串儲存為 NCLOB Oracle 伺服器上的 ,其中字元集為每個字元 4 個字節,而您執行 SetLength 作業,則會將字元串的長度指定為 6 個字節,不過它儲存在伺服器上是 12 個字節。

若要寫入 LOB,您必須已在 SQL SELECT 語句中使用 FOR UPDATE 子句擷取 LOB ,而且必須啟動本機交易。

注意

唯讀 LOB 的寫入作業可能會成功,但不會更新 LOB 伺服器上的 。 不過,在此情況下,會更新的 LOB 本地副本。 因此,物件上稍後的 OracleLob 讀取作業可能會傳回寫入作業的結果。

適用於