OracleLob 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
- 상속
- 구현
설명
OracleBFile 는 OracleLob 데이터가 운영 체제의 물리적 파일 대신 서버에 저장된다는 점에서 입니다. 항상 읽기 전용인 과 달리 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
데이터를 변경할 수 있으며 변경 내용이 데이터베이스에 직접 반영됩니다. OracleLOB
값을 형식 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 |
|
CanSeek |
앞으로 및 뒤로 검색 작업이 수행될 수 있는지 여부를 나타내는 값을 가져옵니다. |
CanTimeout |
현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다. (다음에서 상속됨 Stream) |
CanWrite |
|
ChunkSize |
읽기/쓰기 작업 중에 서버에서 검색하거나 서버로 보낼 최소 바이트 수를 나타내는 값을 가져옵니다. |
Connection |
OracleConnection의 이 인스턴스에서 사용되는 OracleLob을 가져옵니다. |
IsBatched |
애플리케이션이 BeginBatch() 메서드를 호출했는지 여부를 나타내는 값을 가져옵니다. |
IsNull | |
IsTemporary |
OracleLob가 임시 |
Length |
OracleLob의 크기를 반환하는 값을 가져옵니다. |
LobType |
|
Position |
OracleLob 스트림에서 현재 읽기 위치를 가져옵니다. |
ReadTimeout |
스트림 읽기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다. (다음에서 상속됨 Stream) |
Value |
기본값에 해당하는 공용 언어 런타임 스트림 값을 가져옵니다. |
WriteTimeout |
스트림 쓰기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다. (다음에서 상속됨 Stream) |
메서드
Append(OracleLob) |
지정된 |
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() | |
Close() |
현재 스트림을 닫고 해당 스트림과 관련된 리소스를 해제합니다. |
Close() |
현재 스트림을 닫고 현재 스트림과 관련된 소켓과 파일 핸들 등의 리소스를 모두 해제합니다. 이 메서드를 호출하는 대신 스트림이 올바르게 삭제되었는지 확인합니다. (다음에서 상속됨 Stream) |
CopyTo(Int64, OracleLob, Int64, Int64) | |
CopyTo(OracleLob) | |
CopyTo(OracleLob, Int64) | |
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) |
|
ReadExactly(Span<Byte>) |
현재 스트림에서 바이트를 읽고 가 채워질 때까지 |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
현재 스트림에서 바이트 수를 비동기적으로 읽고 |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
현재 스트림에서 바이트를 비동기적으로 읽고, 가 채워질 때까지 |
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에 씁니다. |
적용 대상
.NET