OracleLob Clase

Definición

Representa un tipo de datos binario de objetos grandes (LOB) almacenado en un servidor oracle. Esta clase no puede heredarse.

public ref class OracleLob sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleLob : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleLob = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
Public NotInheritable Class OracleLob
Inherits Stream
Implements ICloneable, INullable
Herencia
Implementaciones

Comentarios

Un OracleLob se diferencia de un OracleBFile en que los datos se almacenan en el servidor en lugar de en un archivo físico del sistema operativo. También puede ser un objeto de lectura y escritura, a diferencia de , OracleBFileque siempre es de solo lectura.

OracleLob Puede ser uno de estos OracleType tipos de datos.

Tipo de datos OracleType Description
Blob Tipo de datos de Oracle BLOB que contiene datos binarios con un tamaño máximo de 4 gigabytes (GB). Esto se asigna a un Array de tipo Byte.
Clob Tipo de datos de Oracle CLOB que contiene datos de caracteres, según el juego de caracteres predeterminado en el servidor, con un tamaño máximo de 4 GB. Esto se asigna a String.
NClob Tipo de datos de Oracle NCLOB que contiene datos de caracteres, en función del juego de caracteres nacional en el servidor con un tamaño máximo de 4 GB. Esto se asigna a String.

Un desarrollador de aplicaciones de .NET puede recuperar los valores de /> de Oracle de tipo y , o el tipo de datos especializado . La OracleLob clase admite la lectura de datos de y escritura en Oracle LOB en la base de datos de Oracle.

A continuación se muestran las características principales de un tipo de datos OracleLob que lo distinguen de los tipos de datos básicos .NET:

  • Después de recuperar el valor de Oracle LOB de la base de datos de Oracle en la OracleLob clase , puede cambiar los LOB datos de una transacción abierta y los cambios se reflejan directamente en la base de datos. Si recupera el valor de Oracle LOB en un Array tipo Byte o String actualiza estas matrices, los cambios no se reflejan en la base de datos.

  • Cuando se usa la OracleLob clase para acceder a un fragmento de un LOB valor, solo ese fragmento se pasa de la base de datos de Oracle al cliente. Cuando se usa el GetChars método para acceder a un fragmento de un LOB valor, todo el contenido del valor se pasa desde la base de datos de Oracle al cliente.

Para obtener un OracleLob objeto, llame al GetOracleLob método .

Puede construir un OracleLob que sea NULL con este formato:

OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null

Esta técnica se usa principalmente para probar si un LOB devuelto desde el servidor es NULL, como se muestra en este ejemplo:

if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then

Un valor NULL LOB se comporta de forma similar a un byte LOB cero en que Read se ejecuta correctamente y siempre devuelve cero bytes.

Al seleccionar una LOB columna que contiene un valor NULL, se devuelve Null.

Debe iniciar una transacción antes de obtener un objeto temporal LOB. De lo contrario, OracleDataReader puede no obtener datos más adelante.

También puede abrir un archivo temporal LOB en Oracle llamando al DBMS_LOB. Procedimiento almacenado del sistema CREATETEMPORARY y enlace de un LOB parámetro de salida. En el lado cliente, un comportamiento temporal LOB es similar a un basado en LOBtablas. Por ejemplo, para actualizar el archivo temporal LOB, debe incluirse en una transacción.

En el ejemplo siguiente se muestra cómo abrir un objeto temporal LOB:

var 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();
var tempLob = (OracleLob)command.Parameters[0].Value;
var 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();
connection.Close();

Note

Se produce un error en el método heredado WriteByte si se usa con datos de caracteres y se produce una InvalidOperationException excepción . Use el Write método en su lugar.

Las temporales LOBsolo se cierran cuando se cierra la conexión, pero con agrupación y bajo carga, los valores temporales LOBno se cierran. Esto se puede resolver mediante la eliminación de , mediante la LOBinvocación tempLob.Dispose()de .

Campos

Nombre Description
Null

Representa un objeto NULL OracleLob .

Propiedades

Nombre Description
CanRead

Obtiene un valor que indica si se puede leer la LOB secuencia.

CanSeek

Obtiene un valor que indica si se pueden realizar operaciones de búsqueda hacia delante y hacia atrás.

CanTimeout

Obtiene un valor que determina si la secuencia actual puede agotar el tiempo de espera.

(Heredado de Stream)
CanWrite

Siempre devuelve true, independientemente de si admite la LOB escritura o no.

ChunkSize

Obtiene un valor que indica el número mínimo de bytes que se van a recuperar o enviar al servidor durante una operación de lectura y escritura.

Connection

Obtiene el objeto OracleConnection utilizado por esta instancia de .OracleLob

IsBatched

Obtiene un valor que indica si una aplicación llamó al BeginBatch() método .

IsNull

Obtiene un valor que indica si es OracleLob una Null secuencia.

IsTemporary

Obtiene un valor que indica si OracleLob es un objeto temporal LOB.

Length

Obtiene un valor que devuelve el tamaño de .OracleLob

LobType

Obtiene un valor que devuelve el tipo de LOB datos.

Position

Obtiene la posición de lectura actual en la OracleLob secuencia.

ReadTimeout

Obtiene o establece un valor, en milisegundos, que determina cuánto tiempo intentará leer la secuencia antes de que se agote el tiempo de espera.

(Heredado de Stream)
Value

Obtiene el valor de secuencia de Common Language Runtime equivalente al valor subyacente.

WriteTimeout

Obtiene o establece un valor, en milisegundos, que determina cuánto tiempo intentará escribir la secuencia antes de que se agote el tiempo de espera.

(Heredado de Stream)

Métodos

Nombre Description
Append(OracleLob)

Anexa datos del especificado LOB al objeto actual LOB.

BeginBatch()

Impide que los desencadenadores del lado servidor se activen mientras se realizan varias operaciones de lectura.

BeginBatch(OracleLobOpenMode)

Impide que los desencadenadores del lado servidor se activen mientras se realizan varias operaciones de lectura y escritura en el modo de acceso especificado.

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia una operación de lectura asincrónica. (Considere la posibilidad de usar ReadAsync(Byte[], Int32, Int32) en su lugar).

(Heredado de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica. (Considere la posibilidad de usar WriteAsync(Byte[], Int32, Int32) en su lugar).

(Heredado de Stream)
Clone()

Crea un nuevo OracleLob objeto que hace referencia al mismo Oracle LOB que el objeto original OracleLob .

Close()

Cierra la secuencia actual y libera los recursos asociados a la secuencia.

Close()

Cierra la secuencia actual y libera los recursos (como sockets y identificadores de archivo) asociados a la secuencia actual. En lugar de llamar a este método, asegúrese de que la secuencia se elimina correctamente.

(Heredado de Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Copia de este OracleLob en un destino OracleLob con la cantidad de datos especificada y el desplazamiento de origen.

CopyTo(OracleLob, Int64)

Copia de esto OracleLob en un destino OracleLob con la cantidad de datos especificada.

CopyTo(OracleLob)

Copia de esto OracleLob en un destino OracleLob.

CopyTo(Stream, Int32)

Lee los bytes de la secuencia actual y los escribe en otra secuencia mediante un tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, mediante un tamaño de búfer y un token de cancelación especificados. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CreateObjRef(Type)

Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
CreateWaitHandle()
Obsoletos.

Asigna un WaitHandle objeto .

(Heredado de Stream)
Dispose()

Libera los recursos que usa este objeto.

Dispose()

Libera todos los recursos usados por .Stream

(Heredado de Stream)
Dispose(Boolean)

Libera los recursos no administrados utilizados por Stream y, opcionalmente, libera los recursos administrados.

(Heredado de Stream)
EndBatch()

Permite que los desencadenadores del lado servidor reanuden la activación después de realizar varias operaciones de escritura.

EndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica pendiente. (Considere la posibilidad de usar ReadAsync(Byte[], Int32, Int32) en su lugar).

(Heredado de Stream)
EndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica. (Considere la posibilidad de usar WriteAsync(Byte[], Int32, Int32) en su lugar).

(Heredado de Stream)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Erase()

Borra todos los datos de este OracleLob.

Erase(Int64, Int64)

Borra la cantidad de datos especificada de este OracleLobobjeto .

Flush()

No se admite actualmente.

FlushAsync()

Borra de forma asincrónica todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.

(Heredado de Stream)
FlushAsync(CancellationToken)

Borra de forma asincrónica todos los búferes de esta secuencia, hace que los datos almacenados en búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación.

(Heredado de Stream)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(Heredado de MarshalByRefObject)
ObjectInvariant()
Obsoletos.

Proporciona compatibilidad con .Contract

(Heredado de Stream)
Read(Byte[], Int32, Int32)

Lee una secuencia de bytes de la secuencia actual OracleLob y avanza la posición dentro de la secuencia por el número de bytes leídos.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes de la secuencia actual, avanza la posición dentro de la secuencia por el número de bytes leídos y supervisa las solicitudes de cancelación.

(Heredado de Stream)
ReadAsync(Byte[], Int32, Int32)

Lee de forma asincrónica una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos.

(Heredado de Stream)
ReadByte()

Lee un byte de la secuencia y avanza la posición dentro de la secuencia por un byte, o devuelve -1 si está al final de la secuencia.

(Heredado de Stream)
Seek(Int64, SeekOrigin)

Establece la posición en la secuencia actual OracleLob .

SetLength(Int64)

Establece la longitud de la OracleLob secuencia en un valor menor que la longitud actual.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
Write(Byte[], Int32, Int32)

Escribe una secuencia de bytes en la secuencia actual OracleLob y avanza la posición actual dentro de esta secuencia por el número de bytes escritos.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, avanza la posición actual dentro de esta secuencia por el número de bytes escritos y supervisa las solicitudes de cancelación.

(Heredado de Stream)
WriteAsync(Byte[], Int32, Int32)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual y avanza la posición actual dentro de esta secuencia por el número de bytes escritos.

(Heredado de Stream)
WriteByte(Byte)

Escribe un byte en la posición actual de la OracleLob secuencia y avanza la posición dentro de la secuencia por un byte.

WriteByte(Byte)

Escribe un byte en la posición actual de la secuencia y avanza la posición dentro de la secuencia por un byte.

(Heredado de Stream)

Implementaciones de interfaz explícitas

Nombre Description
IDisposable.Dispose()

Libera todos los recursos usados por .Stream

(Heredado de Stream)

Se aplica a