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 Streams zu erhöhen, schlägt fehl und gibt OracleLob vom Oracle-Server "Message: ORA-22926: specified trim length is greater than current LOB value es length" (Meldung: ORA-22926: angegebene Kürzenlänge ist größer als die Länge des aktuellen LOB-Werts) zurück.

Ein Stream muss sowohl das Schreiben als auch das Suchen nach SetLength funktionen unterstützen.

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

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

Hinweis

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

Gilt für: