OracleLob Classe

Definição

Representa um tipo de dados binário de objeto grande (LOB) armazenado em um servidor Oracle. Essa classe não pode ser herdada.

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
Herança
Implementações

Comentários

Difere OracleLob de um OracleBFile em que os dados são armazenados no servidor em vez de em um arquivo físico no sistema operacional. Ele também pode ser um objeto de leitura/gravação, ao contrário de um OracleBFile, que é sempre somente leitura.

Pode OracleLob ser um desses OracleType tipos de dados.

Tipo de dados OracleType Descrição
Blob Um tipo de dados Oracle BLOB que contém dados binários com um tamanho máximo de 4 gigabytes (GB). Isso mapeia para um Array tipo Byte.
Clob Um tipo de dados Oracle CLOB que contém dados de caractere, com base no conjunto de caracteres padrão no servidor, com um tamanho máximo de 4 GB. Isso mapeia para String.
NClob Um tipo de dados Oracle NCLOB que contém dados de caractere, com base no conjunto de caracteres nacional no servidor com um tamanho máximo de 4 GB. Isso mapeia para String.

Um desenvolvedor de aplicativos .NET pode recuperar os valores do Oracle LOB em tipos de dados básicos .NET, como Array do tipo Byte e String ou o tipo de dados OracleLob especializado. A OracleLob classe dá suporte à leitura de dados e gravação no Oracle LOB no banco de dados Oracle.

Veja a seguir as principais características de um tipo de dados OracleLob que o distingue dos tipos de dados básicos de .NET:

  • Depois de recuperar o LOB valor oracle do banco de dados Oracle para a OracleLob classe, você pode alterar os LOB dados em uma transação aberta e suas alterações são refletidas diretamente no banco de dados. Se você recuperar o valor oracle LOB em um Array tipo Byte ou String atualizar essas matrizes, suas alterações não serão refletidas no banco de dados.

  • Quando você usa a OracleLob classe para acessar uma parte de um LOB valor, somente essa parte é passada do banco de dados Oracle para o cliente. Quando você usa o GetChars método para acessar uma parte de um LOB valor, todo o conteúdo do valor é passado do banco de dados Oracle para o cliente.

Para obter um OracleLob objeto, chame o GetOracleLob método.

Você pode construir um OracleLob NULL usando este formato:

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

Essa técnica é usada principalmente para testar se um LOB retornado do servidor é NULL, como este exemplo ilustra:

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

Um NULL LOB se comporta de forma semelhante a um byte LOB zero em que Read é bem-sucedido e sempre retorna zero bytes.

A seleção de uma LOB coluna que contém um valor nulo retorna Null.

Você deve iniciar uma transação antes de obter um temporário LOB. Caso contrário, poderá OracleDataReader falhar ao obter dados posteriormente.

Você também pode abrir um temporário LOB no Oracle chamando o DBMS_LOB. Procedimento armazenado do sistema CREATETEMPORARY e associação de um parâmetro de LOB saída. No lado do cliente, um temporário LOB se comporta como um baseado em LOBtabela. Por exemplo, para atualizar o temporário LOB, ele deve ser colocado em uma transação.

O exemplo a seguir demonstra como abrir um temporário 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

O método herdado WriteByte falha se usado com dados de caractere e um InvalidOperationException é gerado. Em vez disso, use o Write método.

Os LOBtemporários só são fechados quando a conexão é fechada, mas com o pool e sob carga, os temporários LOBnão fecham. Isso pode ser resolvido descartando o temporário LOB, invocando tempLob.Dispose().

Campos

Nome Description
Null

Representa um objeto nulo OracleLob .

Propriedades

Nome Description
CanRead

Obtém um valor que indica se o LOB fluxo pode ser lido.

CanSeek

Obtém um valor que indica se as operações de busca para frente e para trás podem ser executadas.

CanTimeout

Obtém um valor que determina se o fluxo atual pode acabar.

(Herdado de Stream)
CanWrite

Sempre retorna true, independentemente de o LOB suporte à gravação ou não.

ChunkSize

Obtém um valor que indica o número mínimo de bytes a serem recuperados ou enviados para o servidor durante uma operação de leitura/gravação.

Connection

Obtém o OracleConnection usado por esta instância do OracleLob.

IsBatched

Obtém um valor que indica se um aplicativo chamado o BeginBatch() método.

IsNull

Obtém um valor que indica se é OracleLob um Null fluxo.

IsTemporary

Obtém um valor que indica se o OracleLob valor é temporário LOB.

Length

Obtém um valor que retorna o tamanho do OracleLob.

LobType

Obtém um valor que retorna o LOB tipo de dados.

Position

Obtém a posição de leitura atual no OracleLob fluxo.

ReadTimeout

Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará ler antes do tempo limite.

(Herdado de Stream)
Value

Obtém o valor de fluxo do common language runtime equivalente ao valor subjacente.

WriteTimeout

Obtém ou define um valor, em milissegundos, que determina por quanto tempo o fluxo tentará gravar antes do tempo limite.

(Herdado de Stream)

Métodos

Nome Description
Append(OracleLob)

Acrescenta dados do especificado LOB ao atual LOB.

BeginBatch()

Impede que gatilhos do lado do servidor sejam disparados durante a execução de várias operações de leitura.

BeginBatch(OracleLobOpenMode)

Impede que gatilhos do lado do servidor sejam disparados ao executar várias operações de leitura e gravação no modo de acesso especificado.

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

Inicia uma operação de leitura assíncrona. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

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

Inicia uma operação de gravação assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Clone()

Cria um novo OracleLob objeto que faz referência ao mesmo Oracle LOB que o objeto original OracleLob .

Close()

Fecha o fluxo atual e libera recursos associados ao fluxo.

Close()

Fecha o fluxo atual e libera todos os recursos (como soquetes e identificadores de arquivo) associados ao fluxo atual. Em vez de chamar esse método, verifique se o fluxo foi descartado corretamente.

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

Copia isso OracleLob para um destino OracleLob com a quantidade de dados especificada e o deslocamento de origem.

CopyTo(OracleLob, Int64)

Copia isso OracleLob para um destino OracleLob com a quantidade de dados especificada.

CopyTo(OracleLob)

Copia isso OracleLob para um destino OracleLob.

CopyTo(Stream, Int32)

Lê os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyTo(Stream)

Lê os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

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

Lê assíncronamente os bytes do fluxo atual e os grava em outro fluxo, usando um token de cancelamento e tamanho de buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo, usando um tamanho de buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream)

Lê assíncronamente os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
CreateWaitHandle()
Obsoleto.

Aloca um objeto WaitHandle.

(Herdado de Stream)
Dispose()

Libera os recursos usados por esse objeto.

Dispose()

Libera todos os recursos usados pelo Stream.

(Herdado de Stream)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo Stream e, opcionalmente, libera os recursos gerenciados.

(Herdado de Stream)
EndBatch()

Permite que os gatilhos do lado do servidor retomem a execução após a execução de várias operações de gravação.

EndRead(IAsyncResult)

Aguarda a conclusão da leitura assíncrona pendente. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
EndWrite(IAsyncResult)

Encerra uma operação de gravação assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Erase()

Apaga todos os dados deste OracleLob.

Erase(Int64, Int64)

Apaga a quantidade especificada de dados deste OracleLob.

Flush()

Não há suporte atualmente.

FlushAsync()

Limpa de forma assíncrona todos os buffers para esse fluxo e faz com que todos os dados em buffer sejam gravados no dispositivo subjacente.

(Herdado de Stream)
FlushAsync(CancellationToken)

Limpa de forma assíncrona todos os buffers para esse fluxo, faz com que todos os dados em buffer sejam gravados no dispositivo subjacente e monitora solicitações de cancelamento.

(Herdado de Stream)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
ObjectInvariant()
Obsoleto.

Fornece suporte para um Contract.

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

Lê uma sequência de bytes do fluxo atual OracleLob e avança a posição dentro do fluxo pelo número de bytes lidos.

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

Lê de forma assíncrona uma sequência de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitora solicitações de cancelamento.

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

Lê de forma assíncrona uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

(Herdado de Stream)
ReadByte()

Lê um byte do fluxo e avança a posição dentro do fluxo por um byte ou retorna -1 se estiver no final do fluxo.

(Herdado de Stream)
Seek(Int64, SeekOrigin)

Define a posição no fluxo atual OracleLob .

SetLength(Int64)

Define o comprimento do OracleLob fluxo como um valor menor que o comprimento atual.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

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

Grava uma sequência de bytes no fluxo atual OracleLob e avança a posição atual dentro desse fluxo pelo número de bytes gravados.

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

Grava de forma assíncrona uma sequência de bytes no fluxo atual, avança a posição atual dentro desse fluxo pelo número de bytes gravados e monitora solicitações de cancelamento.

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

Grava de forma assíncrona uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes gravados.

(Herdado de Stream)
WriteByte(Byte)

Grava um byte na posição atual no OracleLob fluxo e avança a posição dentro do fluxo por um byte.

WriteByte(Byte)

Grava um byte na posição atual no fluxo e avança a posição dentro do fluxo por um byte.

(Herdado de Stream)

Implantações explícitas de interface

Nome Description
IDisposable.Dispose()

Libera todos os recursos usados pelo Stream.

(Herdado de Stream)

Aplica-se a