Udostępnij za pośrednictwem


OracleLob.SetLength(Int64) Metoda

Definicja

Ustawia długość strumienia OracleLob na wartość mniejszą niż bieżąca długość.

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

Żądana długość bieżącego OracleLob strumienia w bajtach. W przypadku CLOB typów danych i NCLOB musi to być liczba parzysta.

Wyjątki

Wartość określona w parametrze value dla CLOB typu danych lub NCLOB nie jest parzysta.

-lub-

Wartość określona w parametrze value jest mniejsza niż zero lub większa niż 4 gigabajty.

Operacja nie znajduje się w ramach transakcji, OracleLob obiekt ma wartość null lub połączenie jest zamknięte.

Obiekt został zamknięty lub usunięty.

Wystąpił błąd Oracle.

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ż długość bieżącej wartości LOB" z serwera Oracle.

Strumień musi obsługiwać zarówno pisanie, jak i wyszukiwanie funkcji SetLength .

Dostawca danych .NET Framework dla programu Oracle obsługuje wszystkie CLOB dane i NCLOB jako Unicode. W związku z tym podczas uzyskiwania CLOB dostępu do typów danych i NCLOB zawsze masz do czynienia z liczbą bajtów, gdzie każdy znak wynosi 2 bajty. Jeśli na przykład ciąg tekstowy zawierający trzy znaki jest zapisywany jako na NCLOB serwerze Oracle, na którym zestaw znaków wynosi 4 bajty na znak, a następnie wykonujesz operację SetLength , określasz długość ciągu jako 6 bajtów, chociaż jest przechowywana jako 12 bajtów na serwerze.

Aby zapisać w LOBpliku , musisz pobrać LOB klauzulę USING FOR UPDATE w instrukcji SQL SELECT i musisz mieć uruchomioną transakcję lokalną.

Uwaga

Operacja zapisu tylko LOB do odczytu może zakończyć się powodzeniem, ale nie aktualizuje LOB serwera. W takim przypadku jednak lokalna kopia obiektu LOB jest aktualizowana. W związku z tym późniejsze operacje odczytu obiektu OracleLob mogą zwracać wyniki operacji zapisu.

Dotyczy