Freigeben über


OracleLob.SetLength(Int64) Methode

Definition

Legt die Länge des OracleLob-Streams auf einen Wert fest, der kleiner als die aktuelle Länge ist.

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

Parameter

value
Int64

Die gewünschte Länge des aktuellen OracleLob-Streams in Bytes. Bei CLOB-Datentypen und NCLOB-Datentypen muss dies eine gerade Zahl sein.

Ausnahmen

Ein im value-Parameter für einen CLOB-Datentyp oder einen NCLOB-Datentyp angegebener Wert ist ungerade.

- oder -

Ein im value-Parameter angegebener Wert ist kleiner als 0 (null) oder größer als 4 Gigabyte.

Die Operation befindet sich nicht innerhalb einer Transaktion, das OracleLob-Objekt ist NULL, oder die Verbindung ist geschlossen.

Das Objekt war geschlossen oder freigegeben.

Es ist ein Oracle-Fehler aufgetreten.

Hinweise

Ein Versuch, die Länge des OracleLob Datenstroms zu erhöhen, schlägt fehl und gibt vom Oracle-Server "Meldung: ORA-22926: angegebene Kürzungslänge ist größer als die Länge des aktuellen LOB-Werts" zurück.

Ein Stream muss sowohl das Schreiben als auch die Suche nach SetLength unterstützen, um zu funktionieren.

Der .NET Framework-Datenanbieter für Oracle verarbeitet alle Daten und als Unicode.The .NET Framework Data Provider for Oracle handles all CLOB and data NCLOB as Unicode. Daher haben Sie es beim Zugriff auf CLOB und NCLOB datentypen immer mit der Anzahl von Bytes zu tun, wobei jedes Zeichen 2 Byte beträgt. Wenn beispielsweise eine Textzeichenfolge, die drei Zeichen enthält, als NCLOB auf einem Oracle-Server gespeichert wird, auf dem der Zeichensatz 4 Byte pro Zeichen ist, und Sie einen SetLength Vorgang ausführen, geben Sie die Länge der Zeichenfolge als 6 Bytes an, obwohl sie als 12 Bytes auf dem Server gespeichert wird.

Um in zu LOBschreiben, müssen Sie die mithilfe der FOR UPDATE-Klausel LOB in der SQL SELECT-Anweisung abgerufen haben, und Sie müssen eine lokale Transaktion gestartet haben.

Hinweis

Ein Schreibvorgang für einen schreibgeschützten LOB Vorgang kann erfolgreich sein, aktualisiert aber nicht auf LOB dem Server. In diesem Fall wird jedoch die lokale Kopie des LOB aktualisiert. Daher können spätere Lesevorgänge für das OracleLob Objekt die Ergebnisse des Schreibvorgangs zurückgeben.

Gilt für: