Represents a large object binary (LOB) data type stored on an Oracle server. This class cannot be inherited.
Assembly: System.Data.OracleClient (in System.Data.OracleClient.dll)
An differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. It can also be a read-write object, unlike an OracleBFile, which is always read-only.
An may be one of these OracleType data types.
OracleType data type
An Oracle CLOB data type that contains character data, based on the default character set on the server, with a maximum size of 4 GB. This maps to String.
An Oracle NCLOB data type that contains character data, based on the national character set on the server with a maximum size of 4 GB. This maps to String.
A .NET application developer can retrieve the Oracle LOB values into basic .NET data types, such as Array of type Byte and String, or the specialized data type. The class supports reading data from and writing to the Oracle LOB in the Oracle database.
The following are the main characteristics of an data type that distinguish it from basic .NET data types:
After you retrieve the Oracle LOB value from the Oracle database into the class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. If you retrieve the Oracle LOB value into an Array of type Byte or String and update these arrays, your changes are not reflected to the database.
When you use the class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. When you use the GetChars method to access a chunk of a LOB value, the entire contents of the value are passed from the Oracle database to the client.
To obtain an object, call the GetOracleLob method.
You can construct an that is NULL using this format:
OracleLob myLob = OracleLob.Null;
This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:
If(myLob == OracleLob.Null)
A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.
Selecting a LOB column that contains a null value returns Null.
You must begin a transaction before obtaining a temporary LOB. Otherwise, the OracleDataReader may fail to obtain data later.
You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. On the client side, a temporary LOB behaves like a table-based LOB. For example, to update the temporary LOB, it must be enclosed in a transaction.
The following C# example demonstrates how to open a temporary LOB.
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.Value; byte tempbuff = new byte; 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(); connection.Close
Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.