OracleLob 클래스

정의

Oracle 서버에 저장된 LOB(대형 이진 개체) 데이터 형식을 나타냅니다.Represents a large object binary (LOB) data type stored on an Oracle server. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

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
상속
구현

설명

OracleLob 에서 다른는 OracleBFile 는 데이터는 운영 체제의 물리적 파일 대신 서버에 저장 됩니다.An OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. 달리 읽기 / 쓰기 개체 일 수도 있습니다는 OracleBFile에 항상 읽기 전용입니다.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

OracleLob 다음 중 하나일 수 있습니다 OracleType 데이터 형식입니다.An OracleLob may be one of these OracleType data types.

OracleType 데이터 형식OracleType data type 설명Description
Blob Oracle BLOB 4 기가바이트 (GB)의 최대 크기를 사용 하 여 이진 데이터를 포함 하는 데이터 형식입니다.An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). 이는 Array 형식의 Byte에 매핑합니다.This maps to an Array of type Byte.
Clob Oracle CLOB 4GB의 최대 크기를 사용 하 여 서버의 기본 문자를 기준으로 문자 데이터를 포함 하는 데이터 형식을 설정 합니다.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. 이는 String에 매핑합니다.This maps to String.
NClob Oracle NCLOB 국가별 문자 4GB의 최대 크기를 사용 하 여 서버의 집합을 기반으로 문자 데이터를 포함 하는 데이터 형식입니다.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. 이는 String에 매핑합니다.This maps to String.

.NET 애플리케이션 개발자는 Oracle을 검색할 수 있습니다 LOB 와 같은 기본.NET 데이터 형식으로 값 Array 형식의 Byte 하 고 String, 또는 특수화 된 OracleLob 데이터 형식입니다.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 OracleLob data type. 합니다 OracleLob 클래스에서 데이터를 읽고 쓰는 Oracle에서 지 원하는 LOB Oracle 데이터베이스에서.The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

다음의 주요 특성은는 OracleLob 기본.NET 데이터 형식에서 구분 하는 데이터 형식:The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Oracle을 검색 한 후 LOB Oracle 데이터베이스에서 값을 OracleLob 클래스를 변경할 수 있습니다는 LOB 열려 있는 트랜잭션이 및 변경 데이터를 데이터베이스로 직접 반영 됩니다.After you retrieve the Oracle LOB value from the Oracle database into the OracleLob class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. Oracle을 검색 하는 경우 LOB 값을 Array 형식의 Byte 또는 String 및이 배열에 업데이트 변경 내용을 데이터베이스에 반영 되지 않습니다.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.

  • 사용 하는 경우는 OracleLob 청크를 액세스 하는 클래스는 LOB 값만 해당 청크는 Oracle 데이터베이스에서 클라이언트에 전달 합니다.When you use the OracleLob class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. 사용 하는 경우는 GetChars 청크를 액세스 하는 방법을 LOB 값, 값의 전체 내용을 Oracle 데이터베이스에서 클라이언트에 전달 합니다.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.

가져올는 OracleLob 개체를 호출 합니다 GetOracleLob 메서드.To obtain an OracleLob object, call the GetOracleLob method.

생성할 수 있습니다는 OracleLob 이 형식을 사용 하 여 NULL입니다.You can construct an OracleLob that is NULL using this format:

OracleLob myLob = OracleLob.Null;  

이 방법은 테스트 하는 데 주로 사용 됩니다 여부는 LOB 이 예제와 같이 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)  

NULL LOB 는 0 바이트 비슷하게 LOB 한다는 점에서 Read 성공 하 고 항상 0 바이트를 반환 합니다.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

선택 하는 LOB null 값이 포함 된 열을 반환 합니다 Null합니다.Selecting a LOB column that contains a null value returns Null.

임시 얻기 전에 트랜잭션을 시작 해야 LOB합니다.You must begin a transaction before obtaining a temporary LOB. 이 고, 그렇지는 OracleDataReader 이후에 데이터를 얻지 실패할 수 있습니다.Otherwise, the OracleDataReader may fail to obtain data later.

임시 열 수도 있습니다 LOB DBMS_LOB를 호출 하 여 Oracle에서. CREATETEMPORARY 시스템 저장 프로시저 및 바인딩은 LOB 매개 변수를 출력 합니다.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. 클라이언트 쪽에서는 임시 LOB 테이블 기반 처럼 LOB합니다.On the client side, a temporary LOB behaves like a table-based LOB. 예를 들어 임시 업데이트 LOB, 트랜잭션에서 묶어야 합니다.For example, to update the temporary LOB, it must be enclosed in a transaction.

다음 C# 예제에서는 임시를 여는 방법을 보여 줍니다 LOB합니다.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[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();  
connection.Close  

참고

상속 된 WriteByte 문자 데이터를 사용 하는 경우 메서드가 실패 및 InvalidOperationException throw 됩니다.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. 대신 Write 메서드를 사용합니다.Use the Write method instead.

임시 LOB닫히면 연결이 닫혀만 있지만 풀링을 사용 하며 부하를 임시 LOBs를 닫지 마세요.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. 임시 삭제 하 여 해결할 수 있습니다 LOB를 호출 하 여 tempLob.Dispose()입니다.This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

필드

Null

null OracleLob 개체를 나타냅니다.Represents a null OracleLob object.

속성

CanRead

LOB 스트림을 읽을 수 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the LOB stream can be read.

CanSeek

앞으로 및 뒤로 검색 작업이 수행될 수 있는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다.Gets a value that determines whether the current stream can time out.

(다음에서 상속됨 Stream)
CanWrite

LOB가 쓰기를 지원하는지 여부에 관계 없이 항상 true를 반환합니다.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

읽기/쓰기 작업 중에 서버에서 검색하거나 서버로 보낼 최소 바이트 수를 나타내는 값을 가져옵니다.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

OracleConnection의 이 인스턴스에서 사용되는 OracleLob을 가져옵니다.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

애플리케이션이 BeginBatch() 메서드를 호출했는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether an application called the BeginBatch() method.

IsNull

OracleLobNull 스트림인지 여부를 나타내는 값을 가져옵니다.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

OracleLob가 임시 LOB인지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

OracleLob의 크기를 반환하는 값을 가져옵니다.Gets a value that returns the size of the OracleLob.

LobType

LOB 데이터 형식을 반환하는 값을 가져옵니다.Gets a value that returns the LOB data type.

Position

OracleLob 스트림에서 현재 읽기 위치를 가져옵니다.Gets the current read position in the OracleLob stream.

ReadTimeout

스트림 읽기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(다음에서 상속됨 Stream)
Value

기본값에 해당하는 공용 언어 런타임 스트림 값을 가져옵니다.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

스트림 쓰기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(다음에서 상속됨 Stream)

메서드

Append(OracleLob)

지정된 LOB에서 현재 LOB까지 데이터를 추가합니다.Appends data from the specified LOB to the current LOB.

BeginBatch()

읽기 작업을 여러 개 수행하는 동안 서버 측 트리거가 발생하는 것을 막습니다.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

지정된 액세스 모드에서 읽기 및 쓰기 작업을 여러 개 수행하는 동안 서버 측 트리거가 발생하는 것을 막습니다.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

비동기 읽기 작업을 시작합니다.Begins an asynchronous read operation. 대신 ReadAsync(Byte[], Int32, Int32)를 사용하세요.(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(다음에서 상속됨 Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

비동기 쓰기 작업을 시작합니다.Begins an asynchronous write operation. 대신 WriteAsync(Byte[], Int32, Int32)를 사용하세요.(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(다음에서 상속됨 Stream)
Clone()

원래 OracleLob 개체와 같은 Oracle LOB를 참조하는 새 OracleLob 개체를 만듭니다.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

현재 스트림을 닫고 해당 스트림과 관련된 리소스를 해제합니다.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

지정된 양의 데이터 및 소스 오프셋으로 이 OracleLob에서 대상 OracleLob로 복사합니다.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

OracleLob에서 대상 OracleLob로 복사합니다.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

지정된 양의 데이터로 이 OracleLob에서 대상 OracleLob로 복사합니다.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

현재 스트림에서 바이트를 읽어서 다른 스트림에 해당 바이트를 씁니다.Reads the bytes from the current stream and writes them to another stream.

(다음에서 상속됨 Stream)
CopyTo(Stream, Int32)

현재 스트림에서 바이트를 읽어서 지정된 버퍼 크기로 다른 스트림에 씁니다.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(다음에서 상속됨 Stream)
CopyToAsync(Stream)

현재 스트림에서 모든 바이트를 비동기적으로 읽어 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, CancellationToken)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 취소 토큰을 사용하여 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, Int32)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기로 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기 및 취소 토큰을 사용하여 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(다음에서 상속됨 Stream)
CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(다음에서 상속됨 MarshalByRefObject)
CreateWaitHandle()

WaitHandle 개체를 할당합니다.Allocates a WaitHandle object.

(다음에서 상속됨 Stream)
Dispose()

이 개체에서 사용하는 리소스를 해제합니다.Releases the resources that are used by this object.

Dispose(Boolean)

Stream에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(다음에서 상속됨 Stream)
DisposeAsync()

Stream에서 사용하는 관리되지 않는 리소스를 비동기적으로 해제합니다.Asynchronously releases the unmanaged resources used by the Stream.

(다음에서 상속됨 Stream)
EndBatch()

쓰기 작업을 여러 개 수행하는 동안 서버 측 트리거가 다시 발생하게 합니다.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

보류 중인 비동기 읽기가 완료되기를 기다립니다.Waits for the pending asynchronous read to complete. 대신 ReadAsync(Byte[], Int32, Int32)를 사용하세요.(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(다음에서 상속됨 Stream)
EndWrite(IAsyncResult)

비동기 쓰기 작업을 끝냅니다.Ends an asynchronous write operation. 대신 WriteAsync(Byte[], Int32, Int32)를 사용하세요.(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(다음에서 상속됨 Stream)
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Erase()

OracleLob에서 모든 데이터를 지웁니다.Erases all data from this OracleLob.

Erase(Int64, Int64)

OracleLob에서 지정된 양의 데이터를 지웁니다.Erases the specified amount of data from this OracleLob.

Flush()

현재 지원되지 않습니다.Not currently supported.

FlushAsync()

이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 디바이스에 비동기적으로 쓰여지도록 합니다.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(다음에서 상속됨 Stream)
FlushAsync(CancellationToken)

이 스트림에 대해 모든 버퍼를 비동기적으로 지우고 버퍼링된 데이터가 내부 디바이스에 쓰여지도록 하고 취소 요청을 모니터링합니다.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(다음에서 상속됨 Stream)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetLifetimeService()

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(다음에서 상속됨 MarshalByRefObject)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
InitializeLifetimeService()

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.Obtains a lifetime service object to control the lifetime policy for this instance.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.Creates a shallow copy of the current MarshalByRefObject object.

(다음에서 상속됨 MarshalByRefObject)
ObjectInvariant()

Contract에 대한 지원을 제공합니다.Provides support for a Contract.

(다음에서 상속됨 Stream)
Read(Byte[], Int32, Int32)

현재 OracleLob 스트림에서 바이트의 시퀀스를 읽은 다음 읽은 바이트 수만큼 스트림 내에서 위치를 앞으로 이동합니다.Reads a sequence of bytes from the current OracleLob stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(다음에서 상속됨 Stream)
ReadAsync(Byte[], Int32, Int32)

현재 스트림에서 바이트 시퀀스를 읽고 읽은 바이트 수만큼 스트림에서 위치를 비동기적으로 앞으로 이동합니다.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(다음에서 상속됨 Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(다음에서 상속됨 Stream)
ReadAsync(Memory<Byte>, CancellationToken)

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(다음에서 상속됨 Stream)
ReadByte()

스트림에서 바이트를 읽고 스트림 내 위치를 한 바이트씩 앞으로 이동하거나 스트림 끝일 경우 -1을 반환합니다.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(다음에서 상속됨 Stream)
Seek(Int64, SeekOrigin)

현재 OracleLob 스트림에서 위치를 설정합니다.Sets the position on the current OracleLob stream.

SetLength(Int64)

OracleLob 스트림의 길이를 현재 길이보다 적은 값으로 설정합니다.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)
Write(Byte[], Int32, Int32)

현재 OracleLob 스트림에 바이트의 시퀀스를 쓰고 이 스트림 내의 현재 위치를 쓰여진 바이트 수만큼 앞으로 이동합니다.Writes a sequence of bytes to the current OracleLob stream, and advances the current position within this stream by the number of bytes written.

Write(ReadOnlySpan<Byte>)

파생 클래스를 재정의될 때 현재 스트림에 바이트의 시퀀스를 쓰고 쓰여진 바이트 수만큼 이 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(다음에서 상속됨 Stream)
WriteAsync(Byte[], Int32, Int32)

현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동합니다.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(다음에서 상속됨 Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(다음에서 상속됨 Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(다음에서 상속됨 Stream)
WriteByte(Byte)

OracleLob 스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트 앞으로 이동합니다.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

명시적 인터페이스 구현

IDisposable.Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the Stream.

(다음에서 상속됨 Stream)

적용 대상