Share via


OracleLob.SetLength(Int64) Metoda

Definice

Nastaví délku datového OracleLob proudu na hodnotu menší, než je aktuální délka.

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

Požadovaná délka aktuálního OracleLob datového proudu v bajtech U CLOB datových typů a NCLOB musí jít o sudé číslo.

Výjimky

Hodnota zadaná v parametru value pro CLOB datový typ nebo NCLOB není sudá.

-nebo-

Hodnota zadaná v parametru value je menší než nula nebo větší než 4 gigabajty.

Operace není v rámci transakce, OracleLob objekt má hodnotu null nebo je připojení ukončeno.

Objekt byl uzavřen nebo odstraněn.

Došlo k chybě Oracle.

Poznámky

Pokus o zvětšení délky datového OracleLob proudu se nezdaří a ze serveru Oracle vrátí zprávu" ORA-22926: zadaná délka oříznutí je větší než délka aktuální hodnoty lob.

Datový proud musí podporovat psaní i hledání SetLength , aby fungoval.

Zprostředkovatel dat rozhraní .NET Framework pro Oracle zpracovává všechna CLOB data a NCLOB jako unicode. Proto při přístupu k datovým typům CLOB a NCLOB vždy pracujete s počtem bajtů, kde každý znak má 2 bajty. Pokud je například textový řetězec obsahující tři znaky uložen jako řetězec NCLOB na serveru Oracle, kde je znaková sada 4 bajty na znak, a provedete SetLength operaci, zadáte délku řetězce jako 6 bajtů, i když je uložen jako 12 bajtů na serveru.

Chcete-li zapisovat do LOB, musíte načíst klauzuli LOB pomocí klauzule FOR UPDATE v příkazu SQL SELECT a musí být spuštěna místní transakce.

Poznámka

Operace zápisu do jen LOB pro čtení může být úspěšná, ale neaktualizuje LOB na serveru. V tomto případě se ale místní kopie aktualizuje LOB . Proto pozdější operace čtení u objektu OracleLob můžou vrátit výsledky operace zápisu.

Platí pro