OracleLob.SetLength(Int64) Metoda

Definicja

Ustawia długość OracleLob strumienia do wartości mniejszej niż bieżąca długość.Sets the length of the OracleLob stream to a value less than the current length.

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

Parametry

value
Int64

Wymagana długość bieżącego OracleLob strumienia w bajtach.The desired length of the current OracleLob stream in bytes. Dla CLOB i NCLOB typów danych, musi to być parzysta liczba.For CLOB and NCLOB data types, this must be an even number.

Wyjątki

Wartość określona w value parametrze CLOB lub dla NCLOB typu danych nie jest parzysta.A value specified in the value parameter for a CLOB or NCLOB data type is not even.

-lub--or- Wartość określona w value parametrze jest mniejsza od zera lub większa niż 4 gigabajty.A value specified in the value parameter is less than zero or greater than 4 gigabytes.

Operacja nie znajduje się w transakcji, OracleLob obiekt ma wartość null lub połączenie jest zamknięte.The operation is not within a transaction, the OracleLob object is null, or the connection is closed.

Obiekt został zamknięty lub usunięty.The object was closed or disposed.

Wystąpił błąd programu Oracle.An Oracle error has occurred.

Uwagi

Próba zwiększenia długości OracleLob strumienia kończy się niepowodzeniem i zwraca komunikat "Message: Ora-22926: określona długość przycinania jest większa niż bieżąca długość wartości LOB" z serwera Oracle.An attempt to increase the length of the OracleLob stream fails, and returns "Message: ORA-22926: specified trim length is greater than current LOB value's length" from the Oracle server.

Strumień musi obsługiwać zarówno funkcję zapisu, jak i wyszukiwanie SetLength .A stream must support both writing and seeking for SetLength to function.

Dostawca danych .NET Framework dla programu Oracle obsługuje wszystkie CLOB i NCLOB dane w formacie Unicode.The .NET Framework Data Provider for Oracle handles all CLOB and NCLOB data as Unicode. W związku z tym w przypadku uzyskiwania dostępu do CLOB NCLOB typów danych i korzystania z nich zawsze ponosisz liczbę bajtów, gdzie każdy znak ma 2 bajty.Therefore, when accessing CLOB and NCLOB data types, you are always dealing with the number of bytes, where each character is 2 bytes. Na przykład jeśli ciąg tekstowy zawierający trzy znaki jest zapisywany jako NCLOB na serwerze Oracle, gdzie zestaw znaków wynosi 4 bajty na znak, a wykonywanie SetLength operacji jest możliwe, należy określić długość ciągu jako 6 bajtów, chociaż jest on przechowywany jako 12 bajtów na serwerze.For example, if a string of text containing three characters is saved as an NCLOB on an Oracle server where the character set is 4 bytes per character, and you perform a SetLength operation, you specify the length of the string as 6 bytes, although it is stored as 12 bytes on the server.

Aby można było zapisać w LOB , należy pobrać LOB klauzulę using for Update w instrukcji SQL SELECT, a użytkownik musi mieć uruchomioną transakcję lokalną.To write to the LOB, you must have retrieved the LOB using the FOR UPDATE clause in the SQL SELECT statement, and you must have a local transaction started.

Uwaga

Operacja zapisu w trybie tylko do odczytu LOB może zakończyć się powodzeniem, ale nie aktualizuje LOB na serwerze.A write operation to a read-only LOB might succeed, but does not update the LOB on the server. W takim przypadku jednak lokalna kopia programu LOB jest aktualizowana.In this case, however, the local copy of the LOB is updated. W związku z tym późniejsze operacje odczytu na OracleLob obiekcie mogą zwrócić wyniki operacji zapisu.Therefore, later read operations on the OracleLob object might return the results of the write operation.

Dotyczy