다음을 통해 공유


OracleLob 클래스

정의

Oracle 서버에 저장된 LOB(대형 이진 개체) 데이터 형식을 나타냅니다. 이 클래스는 상속될 수 없습니다.

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

설명

OracleBFileOracleLob 데이터가 운영 체제의 물리적 파일 대신 서버에 저장된다는 점에서 입니다. 항상 읽기 전용인 과 달리 OracleBFile읽기-쓰기 개체일 수도 있습니다.

OracleLob 이러한 OracleType 데이터 형식 중 하나일 수 있습니다.

OracleType 데이터 형식 Description
Blob 최대 크기가 4GB인 이진 데이터를 포함하는 Oracle BLOB 데이터 형식입니다. 이는 Array 형식의 Byte에 매핑합니다.
Clob 서버의 기본 문자 집합에 따라 최대 크기가 4GB인 문자 데이터를 포함하는 Oracle CLOB 데이터 형식입니다. 이는 String에 매핑합니다.
NClob 최대 크기가 4GB인 서버의 국가별 문자 집합을 기반으로 문자 데이터를 포함하는 Oracle NCLOB 데이터 형식입니다. 이는 String에 매핑합니다.

.NET 애플리케이션 개발자는 Oracle을 검색할 수 있습니다 LOB 와 같은 기본.NET 데이터 형식으로 값 Array 형식의 Byte 하 고 String, 또는 특수화 된 OracleLob 데이터 형식입니다. 클래스는 OracleLob Oracle 데이터베이스에서 Oracle에서 데이터를 읽고 Oracle LOB 에 쓸 수 있도록 지원합니다.

다음은 기본 .NET 데이터 형식과 구분하는 데이터 형식의 OracleLob 기본 특성입니다.

  • Oracle 데이터베이스에서 클래스로 OracleLob Oracle LOB 값을 검색한 후 열려 있는 트랜잭션의 LOB 데이터를 변경할 수 있으며 변경 내용이 데이터베이스에 직접 반영됩니다. Oracle LOB 값을 형식 Byte 의 로 Array 검색하거나 String 이러한 배열을 업데이트하는 경우 변경 내용이 데이터베이스에 반영되지 않습니다.

  • 클래스를 OracleLob 사용하여 값의 LOB 청크에 액세스하는 경우 해당 청크만 Oracle 데이터베이스에서 클라이언트로 전달됩니다. 메서드를 GetChars 사용하여 값 청 LOB 크에 액세스하면 값의 전체 내용이 Oracle 데이터베이스에서 클라이언트로 전달됩니다.

가져올는 OracleLob 개체를 호출 합니다 GetOracleLob 메서드.

다음 형식을 사용하여 NULL인 을 OracleLob 생성할 수 있습니다.

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

이 기술은 다음 예제와 같이 서버에서 반환된 가 LOB NULL인지 여부를 테스트하는 데 주로 사용됩니다.

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

NULL LOB 은 성공하고 항상 0바이트를 LOB 반환하는 Read 의 0바이트와 유사하게 동작합니다.

LOB null 값이 포함된 열을 선택하면 가 반환됩니다Null.

임시 LOB를 가져오기 전에 트랜잭션을 시작해야 합니다. 그렇지 않으면 는 OracleDataReader 나중에 데이터를 가져오지 못할 수 있습니다.

DBMS_LOB 호출하여 Oracle에서 임시 LOB 를 열 수도 있습니다. CREATETEMPORARY 시스템 저장 프로시저 및 출력 매개 변수 바인딩 LOB 클라이언트 쪽에서 임시 는 LOB 테이블 기반 LOB처럼 작동 합니다. 예를 들어 임시 LOB를 업데이트하려면 트랜잭션으로 묶어야 합니다.

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

참고

문자 데이터와 함께 사용하면 상속된 WriteByte 메서드가 실패하고 이 InvalidOperationException throw됩니다. 대신 Write 메서드를 사용합니다.

임시 LOB는 연결이 닫힌 경우에만 닫히지만 풀링 및 로드 중인 경우 임시 LOB가 닫혀 있지 않습니다. 이 문제는 를 호출하여 임시 LOB를 삭제하여 해결할 수 있습니다 tempLob.Dispose().

필드

Null

null OracleLob 개체를 나타냅니다.

속성

CanRead

LOB 스트림을 읽을 수 있는지 여부를 나타내는 값을 가져옵니다.

CanSeek

앞으로 및 뒤로 검색 작업이 수행될 수 있는지 여부를 나타내는 값을 가져옵니다.

CanTimeout

현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다.

(다음에서 상속됨 Stream)
CanWrite

LOB가 쓰기를 지원하는지 여부에 관계 없이 항상 true를 반환합니다.

ChunkSize

읽기/쓰기 작업 중에 서버에서 검색하거나 서버로 보낼 최소 바이트 수를 나타내는 값을 가져옵니다.

Connection

OracleConnection의 이 인스턴스에서 사용되는 OracleLob을 가져옵니다.

IsBatched

애플리케이션이 BeginBatch() 메서드를 호출했는지 여부를 나타내는 값을 가져옵니다.

IsNull

OracleLobNull 스트림인지 여부를 나타내는 값을 가져옵니다.

IsTemporary

OracleLob가 임시 LOB인지 여부를 나타내는 값을 가져옵니다.

Length

OracleLob의 크기를 반환하는 값을 가져옵니다.

LobType

LOB 데이터 형식을 반환하는 값을 가져옵니다.

Position

OracleLob 스트림에서 현재 읽기 위치를 가져옵니다.

ReadTimeout

스트림 읽기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.

(다음에서 상속됨 Stream)
Value

기본값에 해당하는 공용 언어 런타임 스트림 값을 가져옵니다.

WriteTimeout

스트림 쓰기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.

(다음에서 상속됨 Stream)

메서드

Append(OracleLob)

지정된 LOB에서 현재 LOB까지 데이터를 추가합니다.

BeginBatch()

읽기 작업을 여러 개 수행하는 동안 서버 측 트리거가 발생하는 것을 막습니다.

BeginBatch(OracleLobOpenMode)

지정된 액세스 모드에서 읽기 및 쓰기 작업을 여러 개 수행하는 동안 서버 측 트리거가 발생하는 것을 막습니다.

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

비동기 읽기 작업을 시작합니다. 대신 ReadAsync(Byte[], Int32, Int32)를 사용하세요.

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

비동기 쓰기 작업을 시작합니다. 대신 WriteAsync(Byte[], Int32, Int32)를 사용하세요.

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

원래 OracleLob 개체와 같은 Oracle LOB를 참조하는 새 OracleLob 개체를 만듭니다.

Close()

현재 스트림을 닫고 해당 스트림과 관련된 리소스를 해제합니다.

Close()

현재 스트림을 닫고 현재 스트림과 관련된 소켓과 파일 핸들 등의 리소스를 모두 해제합니다. 이 메서드를 호출하는 대신 스트림이 올바르게 삭제되었는지 확인합니다.

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

지정된 양의 데이터 및 소스 오프셋으로 이 OracleLob에서 대상 OracleLob로 복사합니다.

CopyTo(OracleLob)

OracleLob에서 대상 OracleLob로 복사합니다.

CopyTo(OracleLob, Int64)

지정된 양의 데이터로 이 OracleLob에서 대상 OracleLob로 복사합니다.

CopyTo(Stream)

현재 스트림에서 바이트를 읽어서 다른 스트림에 해당 바이트를 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

현재 스트림에서 바이트를 읽어서 지정된 버퍼 크기로 다른 스트림에 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

현재 스트림에서 모든 바이트를 비동기적으로 읽어 다른 스트림에 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 취소 토큰을 사용하여 다른 스트림에 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기로 다른 스트림에 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기 및 취소 토큰을 사용하여 다른 스트림에 씁니다. 두 스트림 위치는 복사된 바이트 수만큼 고급입니다.

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

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
CreateWaitHandle()
사용되지 않음.
사용되지 않음.
사용되지 않음.

WaitHandle 개체를 할당합니다.

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

이 개체에서 사용하는 리소스를 해제합니다.

Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.

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

Stream에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.

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

Stream에서 사용하는 관리되지 않는 리소스를 비동기적으로 해제합니다.

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

쓰기 작업을 여러 개 수행하는 동안 서버 측 트리거가 다시 발생하게 합니다.

EndRead(IAsyncResult)

보류 중인 비동기 읽기가 완료되기를 기다립니다. 대신 ReadAsync(Byte[], Int32, Int32)를 사용하세요.

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

비동기 쓰기 작업을 끝냅니다. 대신 WriteAsync(Byte[], Int32, Int32)를 사용하세요.

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

지정된 개체가 현재 개체와 같은지 확인합니다.

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

OracleLob에서 모든 데이터를 지웁니다.

Erase(Int64, Int64)

OracleLob에서 지정된 양의 데이터를 지웁니다.

Flush()

현재 지원되지 않습니다.

FlushAsync()

이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 디바이스에 비동기적으로 쓰여지도록 합니다.

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

이 스트림에 대해 모든 버퍼를 비동기적으로 지우고 버퍼링된 데이터가 내부 디바이스에 쓰여지도록 하고 취소 요청을 모니터링합니다.

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

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.

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

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

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

현재 Object의 단순 복사본을 만듭니다.

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

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
ObjectInvariant()
사용되지 않음.

Contract에 대한 지원을 제공합니다.

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

현재 OracleLob 스트림에서 바이트의 시퀀스를 읽은 다음 읽은 바이트 수만큼 스트림 내에서 위치를 앞으로 이동합니다.

Read(Span<Byte>)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.

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

현재 스트림에서 바이트 시퀀스를 읽고 읽은 바이트 수만큼 스트림에서 위치를 비동기적으로 앞으로 이동합니다.

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

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.

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

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.

(다음에서 상속됨 Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

현재 스트림에서 최소 바이트 수를 읽고 읽은 바이트 수만큼 스트림 내의 위치를 진행합니다.

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

현재 스트림에서 최소 바이트 수를 비동기적으로 읽고, 스트림 내의 위치를 읽은 바이트 수만큼 발전시키고, 취소 요청을 모니터링합니다.

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

스트림에서 바이트를 읽고 스트림 내 위치를 한 바이트씩 앞으로 이동하거나 스트림 끝일 경우 -1을 반환합니다.

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

count 현재 스트림에서 바이트 수를 읽고 스트림 내의 위치를 이동합니다.

(다음에서 상속됨 Stream)
ReadExactly(Span<Byte>)

현재 스트림에서 바이트를 읽고 가 채워질 때까지 buffer 스트림 내의 위치를 이동합니다.

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

현재 스트림에서 바이트 수를 비동기적으로 읽고 count , 스트림 내의 위치를 확장하고, 취소 요청을 모니터링합니다.

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

현재 스트림에서 바이트를 비동기적으로 읽고, 가 채워질 때까지 buffer 스트림 내의 위치를 발전시키고, 취소 요청을 모니터링합니다.

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

현재 OracleLob 스트림에서 위치를 설정합니다.

SetLength(Int64)

OracleLob 스트림의 길이를 현재 길이보다 적은 값으로 설정합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

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

현재 OracleLob 스트림에 바이트의 시퀀스를 쓰고 이 스트림 내의 현재 위치를 쓰여진 바이트 수만큼 앞으로 이동합니다.

Write(ReadOnlySpan<Byte>)

파생 클래스를 재정의될 때 현재 스트림에 바이트의 시퀀스를 쓰고 쓰여진 바이트 수만큼 이 스트림 내에서 앞으로 이동합니다.

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

현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동합니다.

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

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.

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

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.

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

OracleLob 스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트 앞으로 이동합니다.

WriteByte(Byte)

스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트씩 앞으로 이동합니다.

(다음에서 상속됨 Stream)

명시적 인터페이스 구현

IDisposable.Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.

(다음에서 상속됨 Stream)

확장 메서드

CopyToAsync(Stream, PipeWriter, CancellationToken)

Stream의 바이트를 비동기식으로 읽고 취소 토큰을 사용하여 지정된 PipeWriter에 씁니다.

적용 대상