OracleLob.SetLength(Int64) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 LOB
pliku , 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.