| Oracle® Data Provider for .NET開発者ガイド ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows E72575-01 | 
 | 
|  前 |  次 | 
OracleClobは、CLOBデータへの参照が含まれるオブジェクトです。このオブジェクトは、CLOBに対して操作を実行するためのメソッドを提供します。
| 注意: OracleClobオブジェクトでは、.NET Frameworkバイト配列を使用したCLOBデータの取得または書込み時に、クライアント側のキャラクタ・セットが使用されます。 | 
クラスの継承
System.Object
  System.MarshalByRefObject
    System.IO.Stream
      Oracle.DataAccess.Types.OracleClob
宣言
// C# public sealed class OracleClob : Stream, ICloneable, INullable
要件
| プロバイダ | ODP.NET管理対象外ドライバ | ODP.NET管理対象ドライバ | 
| アセンブリ | Oracle.DataAccess.dll | Oracle.ManagedDataAccess.dll | 
| ネームスペース | Oracle.DataAccess.Types | Oracle.ManagedDataAccess.Types | 
| .NET Framework | 3.5, 4.0, 4.5, 4.6 | 4.0, 4.5, 4.6 | 
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class OracleClobSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);        
 
    // Write 4 chars from writeBuffer, starting at buffer offset 0
    char[] writeBuffer = new char[4] {'a', 'b', 'c', 'd'};
    clob.Write(writeBuffer, 0, 4);
 
    // Append first 2 chars from writeBuffer {'a', 'b'} to the oracleClob
    clob.Append(writeBuffer, 0, 2);
 
    // Prints "clob.Length  = 12"
    Console.WriteLine("clob.Length  = " + clob.Length);
 
    // Reset the Position for the Read
    clob.Position = 0;
 
    // Read 6 chars into readBuffer, starting at buffer offset 0
    char[] readBuffer = new char[6];       
    int charsRead = clob.Read(readBuffer, 0, 6);
 
    // Prints "charsRead    = 6"
    Console.WriteLine("charsRead    = " + charsRead);    
 
    // Prints "readBuffer   = abcdab"
    Console.Write("readBuffer   = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
        
    // Search for the 2nd occurrence of a char pattern 'ab'
    // starting from char offset 0 in the OracleClob
    char[] pattern = new char[2] {'a', 'b'};
    long posFound = clob.Search(pattern, 0, 2);
 
    // Prints "posFound     = 5" 
    Console.WriteLine("posFound     = " + posFound);          
      
    // Erase 4 chars of data starting at char offset 1
    // Sets chars to ''
    clob.Erase(1, 4);
 
    //Prints "clob.Value   = a    b"
    Console.WriteLine("clob.Value   = " + clob.Value);
 
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
OracleClobメンバーは次の表にリスト表示されています。
OracleClobコンストラクタ
OracleClobコンストラクタを、表13-19にリストします。
OracleClob静的フィールド
OracleClob静的フィールドを、表13-20にリストします。
表13-20 OracleClob静的フィールド
| フィールド | 説明 | 
|---|---|
|  | 
 | 
|  | 
 | 
OracleClob静的メソッド
OracleClob静的メソッドを、表13-21にリストします。
OracleClobインスタンス・プロパティ
OracleClobインスタンス・プロパティを、表13-22にリストします。
表13-22 OracleClobインスタンス・プロパティ
| プロパティ | 説明 | 
|---|---|
|  | LOBストリームが読取り可能かどうかを示します | 
|  | 順方向および逆方向検索操作が実行可能かどうかを示します | 
|  | LOBストリームが書込み可能かどうかを示します | 
|  | 
 | 
|  | 
 | 
|  | 
 | 
|  | 
 | 
|  | 現行インスタンスにNULL値があるかどうかを示します | 
|  | 現行インスタンスが一時 | 
|  | 
 | 
|  | 読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します | 
|  | LOBストリームの現行の読取りまたは書込み位置をバイト表示で示します | 
|  | データを | 
OracleClobインスタンス・メソッド
OracleClobインスタンス・メソッドを、表13-23にリストします。
表13-23 OracleClobインスタンス・メソッド
| メソッド | 説明 | 
|---|---|
|  | 現行の | 
|  | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 
 | 
|  | 現行のストリームをクローズし、関連するすべてのリソースを解除します | 
|  | 現行インスタンスが参照するデータと指定されたオブジェクトのデータを比較します | 
|  | 
 | 
| 
 | 
 | 
|  | このオブジェクトによって割り当てられたリソースを解除します | 
|  | 現行の | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 指定されたデータ | 
|  | サポート対象外 | 
|  | 現行インスタンスのハッシュ・コードを戻します | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 2つの | 
|  | 現行インスタンスから読み取ります(オーバーロード) | 
| 
 | 
 | 
|  | 
 | 
|  | 現行のLOBストリームに位置を設定します | 
|  | 
 | 
| 
 | 
 | 
|  | 指定された | 
| 
 | 
 | 
OracleClobコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスを作成します。
オーバーロード・リスト:
このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスをOracleConnectionオブジェクトとともに作成します。
OracleClob(OracleConnection, bool, bool)
このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスを、OracleConnectionオブジェクト、キャッシング用のブール値およびNCLOB用ブール値とともに作成します。
このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスをOracleConnectionオブジェクトとともに作成します。
宣言
// C#
public OracleClob(OracleConnection con);
パラメータ
con
OracleConnectionオブジェクト。
例外
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
接続は、アプリケーションによって明示的にオープンされる必要があります。OracleClobでは、接続を暗黙的にオープンしません。一時CLOBでは、指定された接続を使用してCLOBデータを格納します。デフォルトではキャッシングは有効化されていません。
このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスを、OracleConnectionオブジェクト、キャッシング用のブール値およびNCLOB用ブール値とともに作成します。
宣言
// C# public OracleClob(OracleConnection con, bool bCaching, bool bNCLOB);
パラメータ
con
OracleConnectionオブジェクト接続
bCaching
サーバー側のキャッシングが有効化されているかどうかを示すフラグ
bNCLOB
インスタンスがNCLOBの場合はtrueに、CLOBの場合はfalseに設定されるフラグ
例外
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
接続は、アプリケーションによって明示的にオープンされる必要があります。OracleClobでは、接続を暗黙的にオープンしません。一時CLOBまたはNCLOBでは、指定された接続を使用してCLOBデータを格納します。
OracleClob静的フィールドを、表13-24にリストします。
表13-24 OracleClob静的フィールド
| フィールド | 説明 | 
|---|---|
|  | 
 | 
|  | 
 | 
MaxSizeフィールドでは、CLOBが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します。
宣言
// C# public static readonly Int64 MaxSize = 4294967295;
備考
このフィールドは、ユーザー操作が許容最大長(バイト表示)を超えているかどうかをチェックするコードに便利です。
OracleClobインスタンス・プロパティを、表13-26にリストします。
表13-26 OracleClobインスタンス・プロパティ
| プロパティ | 説明 | 
|---|---|
|  | LOBストリームが読取り可能かどうかを示します | 
|  | 順方向および逆方向検索操作が実行可能かどうかを示します | 
|  | LOBストリームが書込み可能かどうかを示します | 
|  | 
 | 
|  | 
 | 
|  | 
 | 
|  | 
 | 
|  | 現行インスタンスにNULL値があるかどうかを示します | 
|  | 現行インスタンスが一時 | 
|  | 
 | 
|  | 読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します | 
|  | LOBストリームの現行の読取りまたは書込み位置をバイト表示で示します | 
|  | データを | 
Streamをオーバーライドします
このインスタンス・プロパティではLOBストリームが読取り可能かどうかを示します。
宣言
// C#
public override bool CanRead{get;}
プロパティ値
LOBストリームが読取り可能の場合はtrueを戻し、それ以外の場合はfalseを戻します。
Streamをオーバーライドします
このインスタンス・プロパティでは、順方向および逆方向シーク操作が実行可能かどうかを示します。
宣言
// C#
public override bool CanSeek{get;}
プロパティ値
順方向および逆方向シーク操作が実行可能の場合はtrueを戻し、それ以外の場合はfalseを戻します。
Streamをオーバーライドします
このインスタンス・プロパティでは、LOBオブジェクトが書込みをサポートしているかどうかを示します。
宣言
// C#
public override bool CanWrite{get;}
プロパティ値
LOBストリームが書き込み可能の場合は、trueを戻し、それ以外の場合はfalseを戻します。
このインスタンス・プロパティでは、CLOBデータの取得および書込みに使用するOracleConnectionを示します。
宣言
// C#
public OracleConnection Connection {get;}
プロパティ値
OracleConnection。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
このインスタンス・プロパティでは、CLOBが空かどうかを示します。
宣言
// C#
public bool IsEmpty {get;}
プロパティ値
bool。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
このインスタンス・プロパティでは、索引更新を遅延させるためにCLOBがオープンされているかどうかを示します。
宣言
// C#
public bool IsInChunkWriteMode{get;}
プロパティ値
CLOBがオープンされている場合はtrueを戻し、それ以外の場合はfalseを戻します。
このインスタンス・プロパティは、OracleClobオブジェクトがNClobであるかどうかを示します。
宣言
// C#
public bool IsNClob {get;}
プロパティ値
bool。
このプロパティは現行インスタンスにNULL値があるかどうかを示します。
宣言
// C#
public bool IsNull{get;}
プロパティ値
現行インスタンスにNULL値がある場合はtrue、それ以外の場合はfalseを戻します。
このインスタンス・プロパティでは、現行のインスタンスが一時CLOBにバインドされているかどうかを示します。
宣言
// C#
public bool IsTemporary {get;}
プロパティ値
bool。
Streamをオーバーライドします
このインスタンス・プロパティでは、CLOBデータのサイズをバイト数で示します。
宣言
// C#
public override Int64 Length {get;}
プロパティ値
CLOBのサイズをバイト数で示すInt64
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
このインスタンス・プロパティでは、読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します。
宣言
// C#
public int OptimumChunkSize{get;}
プロパティ値
取得または送信する最小バイトを表す数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
Streamをオーバーライドします
このインスタンスでは、LOBストリームの現行の読取りまたは書込み位置をバイト数で示します。
宣言
// C#
public override Int64 Position{get; set;}
プロパティ値
読取りまたは書込み位置を示すInt64
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - Positionは0未満です。
このプロパティ・インスタンスでは、CLOBまたはNCLOBの最初の文字を起点とするデータを文字列として戻します。
宣言
// C#
public string Value{get;}
プロパティ値
文字列
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - Valueは0未満です。
備考
このプロパティの使用により、Positionの値が使用または変更されることはありません。
このプロパティが戻すことができる文字列の最大長は2GBです。
OracleClobインスタンス・メソッドを、表13-27にリストします。
表13-27 OracleClobインスタンス・メソッド
| メソッド | 説明 | 
|---|---|
|  | 現行の | 
|  | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 
 | 
|  | 現行のストリームをクローズし、関連するすべてのリソースを解除します | 
|  | 現行インスタンスが参照するデータと指定されたオブジェクトのデータを比較します | 
|  | 
 | 
| 
 | 
 | 
|  | このオブジェクトによって割り当てられたリソースを解除します | 
|  | 現行の | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 指定されたデータ | 
|  | サポート対象外 | 
|  | 現行インスタンスのハッシュ・コードを戻します | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
|  | 2つの | 
|  | 現行インスタンスから読み取ります(オーバーロード) | 
| 
 | 
 | 
|  | 
 | 
|  | 現行のLOBストリームに位置を設定します | 
|  | 
 | 
| 
 | 
 | 
|  | 指定された | 
| 
 | 
 | 
このインスタンス・メソッドでは、現行のOracleClobインスタンスにデータを追加します。
オーバーロード・リスト:
このインスタンス・メソッドでは、指定されたOracleClobオブジェクトが参照するCLOBデータを現行のOracleClobインスタンスに追加します。
このインスタンス・メソッドでは、指定されたバイト配列バッファのオフセット(バイト単位)から始まる、指定されたバイト配列バッファのデータをCLOBの最後に追加します。
このインスタンス・メソッドでは、指定された文字バッファのオフセット(文字表示)で始まるデータを、指定された文字配列バッファから現行のOracleClobインスタンスの最後に追加します。
このインスタンス・メソッドでは、指定されたOracleClobオブジェクトが参照するCLOBデータを現行のOracleClobインスタンスに追加します。
宣言
// C#
public void Append(OracleClob obj);
パラメータ
obj
OracleClobオブジェクト。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。
備考
キャラクタ・セット変換は行われません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
このインスタンス・メソッドでは、指定されたバイト配列バッファのオフセット(バイト単位)から始まる、指定されたバイト配列バッファのデータをCLOBの最後に追加します。
宣言
// C# public int Append(byte[] buffer, int offset, int count);
パラメータ
buffer
Unicode文字列を表すバイト配列
offset
データ読取り元バッファのゼロ・ベースのバイト・オフセット
count
追加するバイト数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - offsetまたはcountパラメータのいずれかが偶数でない場合。
備考
それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetとcountの両方が偶数である必要があります。
このインスタンス・メソッドでは、指定された文字バッファのオフセット(文字表示)で始まるデータを、指定された文字配列バッファから現行のOracleClobインスタンスの最後に追加します。
宣言
// C# public void Append(char[] buffer, int offset, int count);
パラメータ
buffer
文字の配列
offset
データ読取り元バッファのゼロ・ベース・オフセット(文字)
count
追加する文字数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class AppendSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
      
    // Append 2 chars {'d', 'e'} to the OracleClob
    char[] buffer = new char[3] {'d', 'e', 'f'};
    clob.Append(buffer, 0, 2);
 
    // Prints "clob.Value = de"
    Console.WriteLine("clob.Value = " + clob.Value);
     
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
このインスタンス・メソッドでは、CLOBをオープンします。
宣言
// C# public void BeginChunkWrite();
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
BeginChunkWriteをCLOBデータの処理前に呼び出す必要はありません。これはパフォーマンス上の理由で提供されています。
このメソッドを呼び出した後は、書き込み操作を行っても列上のドメインまたは機能ベースの索引は更新されません。索引を更新できるのは、EndChunkWriteを呼び出した後に1回のみです。
このインスタンス・メソッドでは、OracleClobオブジェクトのコピーを作成します。
宣言
// C# public object Clone();
戻り値
OracleClobオブジェクト。
実装
ICloneable
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
複製されたオブジェクトのプロパティ値は、複製元のオブジェクトのプロパティ値と同じです。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CloneSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob1 = new OracleClob(con);
 
    // Prints "clob1.Position = 0"
    Console.WriteLine("clob1.Position = " + clob1.Position);
    
    // Set the Position before calling Clone()
    clob1.Position = 1;
 
    // Clone the OracleClob
    OracleClob clob2 = (OracleClob)clob1.Clone();    
    
    // Prints "clob2.Position = 1"
    Console.WriteLine("clob2.Position = " + clob2.Position);
 
    clob1.Close(); 
    clob1.Dispose();
 
    clob2.Close();
    clob2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
Streamをオーバーライドします
このインスタンス・メソッドでは、現行ストリームをクローズし、それに関連する任意のリソースを解除します。
宣言
// C# public override void Close();
このインスタンス・メソッドでは、現行のインスタンスが参照するデータと指定されたオブジェクトのデータを比較します。
宣言
// C# public int Compare(Int64 src_offset, OracleClob obj, Int64 dst_offset, Int64 amount);
パラメータ
src_offset
現行インスタンスの比較開始ポイント(文字)
obj
指定されたOracleClobオブジェクト
dst_offset
指定されたOracleClobの比較開始ポイント(文字)
amount
比較する文字数
戻り値
メソッドが戻す値は次のとおりです。
ゼロ未満: 現行のインスタンスが参照するデータが、指定されたインスタンスのデータより小さい場合
ゼロ: どちらのオブジェクトも同じデータを参照する場合
ゼロ超過: 現行のインスタンスが参照するデータが、指定されたインスタンスのデータより大きい場合
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。
ArgumentOutOfRangeException - src_offset、dst_offsetまたはamountパラメータのいずれかが0より小さい場合。
備考
比較対象の2つのOracleClobオブジェクトのキャラクタ・セットは、有効な比較に対して同じである必要があります。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
CopyToでは、現行のインスタンスから指定されたOracleClobオブジェクトにデータをコピーします。
オーバーロード・リスト:
このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleClobオブジェクトにデータをコピーします。
このインスタンス・メソッドでは、データを現行のOracleClobインスタンスから指定されたOracleClobオブジェクトに、指定されたオフセット先とともにコピーします。
CopyTo(Int64, OracleClob, Int64, Int64)
このインスタンス・メソッドでは、データを現行のOracleClobインスタンスから指定されたOracleClobオブジェクトに、指定されたソース・オフセット、オフセット先および文字数とともにコピーします。
このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleClobオブジェクトにデータをコピーします。
宣言
// C#
public Int64 CopyTo(OracleClob obj);
パラメータ
obj
データのコピー先のOracleClobオブジェクト
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
このインスタンス・メソッドでは、データを現行のOracleClobインスタンスから指定されたOracleClobオブジェクトに、指定されたオフセット先とともにコピーします。
宣言
// C# public Int64 CopyTo(OracleClob obj, Int64 dst_offset);
パラメータ
obj
データのコピー先のOracleClobオブジェクト
dst_offset
OracleClobオブジェクトをコピーするオフセット(文字)
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
ArgumentOutOfRangeException - dst_offsetは0未満です。
InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
dst_offsetがOracleClobデータの終点を超えている場合は、dst_offsetに到達するまでOracleClobに空白が書き込まれます。
オフセットは0ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
このインスタンス・メソッドでは、データを現行のOracleClobインスタンスから指定されたOracleClobオブジェクトに、指定されたソース・オフセット、オフセット先および文字数とともにコピーします。
宣言
// C# public Int64 CopyTo(Int64 src_offset,OracleClob obj,Int64 dst_offset, Int64 amount);
パラメータ
src_offset
データの読取り元の現行インスタンス内のオフセット(文字)
obj
データのコピー先のOracleClobオブジェクト
dst_offset
OracleClobオブジェクトをコピーするオフセット(文字)
amount
コピーするデータ容量
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。
ArgumentOutOfRangeException - src_offset、dst_offsetまたはamountパラメータが0より小さい場合。
備考
dst_offsetがOracleClobデータの終点を超えている場合は、dst_offsetに到達するまでOracleClobに空白が書き込まれます。
オフセットは0ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CopyToSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
    
    OracleClob clob1 = new OracleClob(con);
    OracleClob clob2 = new OracleClob(con);
      
    // Write 4 chars, starting at buffer offset 0
    char[] buffer = new char[4] {'a', 'b', 'c', 'd'};    
    clob1.Write(buffer, 0, 4);
 
    // Copy 2 chars from char 0 of clob1 to char 1 of clob2
    clob1.CopyTo(0, clob2, 1, 2);
    
    //Prints "clob2.Value =  ab"
    Console.WriteLine("clob2.Value = " + clob2.Value);
        
    clob1.Close(); 
    clob1.Dispose();
 
    clob2.Close();
    clob2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
このインスタンス・メソッドでは、このオブジェクトによって割り当てられたリソースを解除します。
宣言
public void Dispose();
実装
IDisposable
備考
オブジェクトは、処理後は再度使用できません。一部のプロパティには継続してアクセスできますが、その値は適切ではありません。リソースが解放されているため、メソッドのコールにより例外が発生することがあります。
このインスタンス・メソッドでは、現行のOracleClobインスタンスが参照するCLOBをクローズします。
宣言
// C# public void EndChunkWrite();
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
BeginChunkWriteメソッドによって書込み操作が遅延する場合は、ただちに索引更新が行われます。
Eraseでは、データの一部またはすべてを消去します。
オーバーロード・リスト:
このインスタンス・メソッドでは、すべてのデータを消去します。
このインスタンス・メソッドでは、指定されたoffsetで始まる指定されたデータamount(文字表示)をゼロ・バイト充填文字(文字表示)で置き換えます。
このインスタンス・メソッドでは、指定されたoffsetで始まる指定されたデータamount(文字表示)をゼロ・バイト充填文字(文字表示)で置き換えます。
宣言
// C# public Int64 Erase(Int64 offset, Int64 amount);
パラメータ
offset
オフセット
amount
データ数
戻り値
消去済実績文字数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - offsetまたはamountパラメータは0未満です。
Objectをオーバーライドします
このメソッドにより、現行インスタンスのハッシュ・コードを戻します。
宣言
// C# public override int GetHashCode();
戻り値
ハッシュ・コードを表すint
このインスタンス・メソッドでは、2つのOracleClobが参照するLOBデータを比較します。
宣言
// C#
public bool IsEqual(OracleClob obj);
パラメータ
obj
OracleClobオブジェクト。
戻り値
現行のOracleClobおよび指定されたOracleClobが同じLOBを参照する場合は、trueを戻します。それ以外の場合はfalseを戻します。
備考
2つの異なるOracleClobインスタンスが同じLOBを参照できるため、2つのOracleClobオブジェクトが==またはEquals()に対してfalseを戻す場合でも、このメソッドではtrueを戻すことができます。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。
Readでは、現行インスタンスから指定数を読み取り、配列バッファに移入します。
オーバーロード・リスト:
このインスタンス・メソッドでは、現行のインスタンスから指定バイト数を読み取り、バイト配列bufferに移入します。
このインスタンス・メソッドでは、現行のインスタンスから指定バイト数を読み取り、文字配列バッファに移入します。
Streamをオーバーライドします
このインスタンス・メソッドでは、現行のインスタンスから指定バイト数を読み取り、バイト配列bufferに移入します。
宣言
// C# public override int Read(byte [] buffer, int offset, int count);
パラメータ
buffer
移入されるバイト配列バッファ
offset
バッファに移入されるオフセット(バイト)
count
読み取られるバイト数
戻り値
CLOBから読み取られるバイト数
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetとcountの両方が偶数である必要があります。
LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。その位置は偶数である必要があります。
OracleClobでは、ストリームが終点に達していない場合でも、要求より少ないバイト数を自由に戻すことができます。
このインスタンス・メソッドでは、現行のインスタンスから指定バイト数を読み取り、文字配列バッファに移入します。
宣言
// C# public int Read(char[ ] buffer, int offset, int count);
パラメータ
buffer
移入される文字配列バッファ
offset
バッファに移入されるオフセット(文字)
count
読み取られる文字数
戻り値
戻り値はCLOBから読み取られる文字数を示します。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。
offsetまたはcountが0未満の場合
offsetがbuffer.Length以上である場合
offsetおよびcountの合計がbuffer.Lengthより大きい場合
備考
すべてのCLOBおよびNCLOBデータをUnicodeとして処理します。
LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class ReadSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
    
    // Write 3 chars, starting at buffer offset 1
    char[] writeBuffer = new char[4] {'a', 'b', 'c', 'd'};
    clob.Write(writeBuffer, 1, 3);
 
    // Reset the Position (in bytes) for Read
    clob.Position = 2;
 
    // Read 2 chars into buffer starting at buffer offset 1
    char[] readBuffer = new char[4];    
    int charsRead = clob.Read(readBuffer, 1, 2);
 
    // Prints "charsRead  = 2"
    Console.WriteLine("charsRead  = " + charsRead);    
 
    // Prints "readBuffer =  cd "
    Console.Write("readBuffer = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
    
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
Searchでは、OracleClobの現行のインスタンスの文字パターンを検索します。
オーバーロード・リスト:
このインスタンス・メソッドでは、OracleClobの現行インスタンスでバイト配列で表される文字パターンを検索します。
このインスタンス・メソッドでは、OracleClobの現行インスタンスの文字パターンを検索します。
このインスタンス・メソッドでは、OracleClobの現行インスタンスでバイト配列で表される文字パターンを検索します。
宣言
// C# public int Search(byte[] val, Int64 offset, Int64 nth);
パラメータ
val
Unicodeバイト配列
offset
OracleClobの検索の起点の0ベース・オフセット(文字)
nth
絶対オフセット(文字)が戻される特定の一致の出現(1ベース)
戻り値
一致のnth回目の出現に対して、一致パターン(バイト表示)の起点の絶対offsetを戻します。それ以外の場合は、0が戻されます。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。
offsetが0未満の場合
nthが0以下の場合
nthがOracleClob.MaxSize以上の場合
offsetがOracleClob.MaxSize以上の場合
備考
byte[ ]は検索前にUnicodeに変換されます。
検索パターンの制限は16383バイトです。
このインスタンス・メソッドでは、OracleClobの現行インスタンスの文字パターンを検索します。
宣言
// C# public Int64 Search(char [ ] val, Int64 offset, Int64 nth);
パラメータ
val
検索対象のUnicode文字列
offset
OracleClobの検索の起点の0ベース・オフセット(文字)
nth
絶対オフセット(文字)が戻される特定の一致の出現(1ベース)
戻り値
一致のnth回目の出現に対して、一致パターン(文字表示)の起点の絶対offsetを戻します。それ以外の場合は、0が戻されます。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。
offsetが0未満の場合
nthが0以下の場合
val.Lengthの2倍が16383より大きい場合
nthがOracleClob.MaxSize以上の場合
offsetがOracleClob.MaxSize以上の場合
備考
検索パターンの制限は16383バイトです。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class SearchSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
    
    // Write 7 chars, starting at buffer offset 0
    char[] buffer = new char[7] {'a', 'b', 'c', 'd', 'a', 'b', 'c'};
    clob.Write(buffer, 0, 7);
      
    // Search for the 2nd occurrence of a char pattern 'bc'
    // starting at offset 1 in the OracleBlob
    char[] pattern = new char[2] {'b', 'c'};
    long posFound = clob.Search(pattern, 1, 2);
 
    // Prints "posFound = 6" 
    Console.WriteLine("posFound = " + posFound);
          
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}
Streamをオーバーライドします
このインスタンス・メソッドでは現行のLOBストリームに位置を設定します。
宣言
// C# public override Int64 Seek(Int64 offset, SeekOrigin origin);
パラメータ
offset
起点に相対的なバイト・オフセット
origin
新規位置を取得する場合に使用する参照ポイントを示すタイプSystem.IO.SeekOriginの値
戻り値
位置を示すInt64が戻されます。
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
offsetが負の場合は、新規位置がoffsetによって指定された文字数だけoriginで指定した位置より前になります。
offsetがゼロの場合は、originで指定した位置が新規位置となります。
offsetが正の場合は、新規位置はoffsetによって指定された文字数だけoriginで指定した位置より後になります。
SeekOrigin.Beginはストリームの開始を指定します。
SeekOrigin.Currentはストリーム内の現行位置を指定します。
SeekOrigin.Endはストリームの終点を指定します。
Streamをオーバーライドします
このインスタンス・メソッドでは、CLOB値を指定された長さ(文字表示)に切り捨てます。
宣言
// C#
public override void SetLength(Int64 newlen);
パラメータ
newlen
現行ストリームに必要な長さ(文字)
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - newlenパラメータは0より大きい場合。
このインスタンス・メソッドでは、指定された配列バッファからOracleClobにデータを書き込みます。
オーバーロード・リスト:
このインスタンス・メソッドでは、指定されたバイト配列バッファからOracleClobにデータを書き込みます。
このインスタンス・メソッドでは、指定された文字配列バッファからOracleClobにデータを書き込みます。
Streamをオーバーライドします
このインスタンス・メソッドでは、指定されたバイト配列バッファからOracleClobにデータを書き込みます。
宣言
// C# public override void Write(byte[ ] buffer, int offset, int count);
パラメータ
buffer
Unicode文字列を表すバイト配列バッファ
offset
bufferの読取り元のオフセット(バイト)
count
OracleClobに書き込みされるバッファのデータ数(バイト)
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。
offsetまたはcountが0未満の場合
offsetがbuffer.Length以上である場合
offsetおよびcountの合計がbuffer.Lengthより大きい場合
offset、countまたはPositionが偶数の場合
備考
それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetとcountの両方が偶数である必要があります。
LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。Positionプロパティは偶数である必要があります。
必要に応じて、クライアント・キャラクタ・セットからデータベース・キャラクタ・セットに適切なデータ変換が行われます。
このインスタンス・メソッドでは、指定された文字配列バッファからOracleClobにデータを書き込みます。
宣言
// C# public void Write(char[ ] buffer, int offset, int count);
パラメータ
buffer
OracleClobに書き込まれた文字配列バッファ
offset
bufferの読取り元のオフセット(文字)
count
OracleClobに書き込まれるバッファ数(文字)
例外
ObjectDisposedException - オブジェクトはすでに処理されています。
InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。
offsetまたはcountが0未満の場合
offsetがbuffer.Length以上である場合
offsetおよびcountの合計がbuffer.Lengthより大きい場合
Positionが偶数でない場合
備考
すべてのCLOBおよびNCLOBデータをUnicodeとして処理します。
LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。
必要に応じて、クライアント・キャラクタ・セットからデータベース・キャラクタ・セットに適切なデータ変換が行われます。
例
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class WriteSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
      
    // Set the Position for the Write;
    clob.Position = 0;
 
    // Begin ChunkWrite to improve performance
    // Index updates occur only once after EndChunkWrite
    clob.BeginChunkWrite();         
      
    // Write to the OracleClob in 5 chunks of 2 chars each
    char[] c = new char[2] {'a', 'b'};
    for (int index = 0; index < 5; index++)
    {
      clob.Write(c, 0, c.Length);
    }
    clob.EndChunkWrite();
 
    // Prints "clob.Value = ababababab"
    Console.WriteLine("clob.Value = " + clob.Value);
 
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}