Freigeben über


OracleLob-Klasse

Stellt den auf einem Oracle-Server gespeicherten Datentyp LOB (Large Object Binary) dar. Die Klasse kann nicht geerbt werden.

Namespace: System.Data.OracleClient
Assembly: System.Data.OracleClient (in system.data.oracleclient.dll)

Syntax

'Declaration
Public NotInheritable Class OracleLob
    Inherits Stream
    Implements ICloneable, IDisposable, INullable
'Usage
Dim instance As OracleLob
public sealed class OracleLob : Stream, ICloneable, IDisposable, INullable
public ref class OracleLob sealed : public Stream, ICloneable, IDisposable, INullable
public final class OracleLob extends Stream implements ICloneable, IDisposable, 
    INullable
public final class OracleLob extends Stream implements ICloneable, IDisposable, 
    INullable

Hinweise

Ein OracleLob unterscheidet sich von einer OracleBFile dadurch, dass die Daten auf dem Server und nicht in einer physikalischen Datei im Betriebssystem gespeichert werden. Im Gegensatz zu einer OracleBFile, die immer schreibgeschützt ist, kann es sich dabei auch um ein Lese-/Schreibobjekt handeln.

Ein OracleLob kann einer der folgenden OracleType-Datentypen sein:

OracleType-Datentyp

Beschreibung

Blob

Ein Oracle-BLOB-Datentyp, der Binärdaten mit einer maximalen Größe von 4 Gigabyte enthält. Wird einem Array vom Typ Byte zugeordnet.

Clob

Ein Oracle-CLOB-Datentyp für Zeichendaten, die auf dem Standardzeichensatz des Servers beruhen und eine maximale Größe von 4 Gigabyte haben können. Wird String zugeordnet.

NClob

Ein Oracle-NCLOB-Datentyp für Zeichendaten, die auf dem nationalen Zeichensatz des Servers beruhen und eine maximale Größe von 4 Gigabyte haben können. Wird String zugeordnet.

Rufen Sie zum Abrufen eines OracleLob-Objekts die GetOracleLob-Methode auf.

Sie können ein OracleLob erstellen, das NULL ist, indem Sie das folgende Format verwenden:

OracleLob myLob = OracleLob.Null;

Dieses Verfahren wird i. d. R. verwendet, um zu überprüfen, ob ein vom Server zurückgegebenes LOB NULL ist, wie im Beispiel dargestellt:

If(myLob == OracleLob.Null)

Ein NULL-LOB verhält sich wie ein LOB mit 0 (null) Byte, da Read erfolgreich ausgeführt werden kann und dabei immer 0 (null) Byte zurückgegeben wird.

Wenn eine LOB-Spalte mit einem NULL-Wert ausgewählt wird, wird Null zurückgegeben.

Sie müssen eine Transaktion beginnen, bevor Sie ein temporäres LOB abrufen können. Andernfalls kann der OracleDataReader möglicherweise später keine Daten abrufen.

Sie können auch ein temporäres LOB in Oracle öffnen, indem Sie die im System gespeicherte Prozedur DBMS_LOB.CREATETEMPORARY aufrufen und einen LOB-Ausgabeparameter binden. Clientseitig verhält sich ein temporäres LOB wie ein tabellenbasiertes LOB. Zum Aktualisieren muss das temporäre LOB z. B. in eine Transaktion eingebunden werden.

Im folgenden C#-Beispiel wird veranschaulicht, wie ein temporäres LOB geöffnet wird.

OracleConnection connection = new OracleConnection("server=MyServer; integrated security=yes;");
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
command.Transaction = transaction;
command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;
byte[] tempbuff = new byte[10000];
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
command.Parameters.Clear();
command.CommandText = "MyTable.MyProc";
command.CommandType = CommandType.StoredProcedure;  
command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
command.ExecuteNonQuery();
transaction.Commit();

Hinweis

Die geerbte WriteByte-Methode schlägt fehl, wenn sie mit Zeichendaten verwendet wird. In diesem Fall wird eine InvalidOperationException ausgelöst. Verwenden Sie stattdessen die Write-Methode.

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.IO.Stream
      System.Data.OracleClient.OracleLob

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1

Siehe auch

Referenz

OracleLob-Member
System.Data.OracleClient-Namespace