ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

GetChunkByteメソッド

説明

LONGまたはLONG RAW型のフィールドからデータを読み込み、バイト配列に格納し、読み込んだデータのサイズを戻します。

使用方法

Size_read = orafield.GetChunkByte(ByteArray, offset, numbytes) 

引数

このメソッドの引数は、次のとおりです。

引数 説明
ByteArray データを格納するバイト配列の最初の要素。
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。

備考

可能な場合、GetChunkByteメソッドは、ローカル・キャッシュから指定されたバイト数を取り出します。ただし、一部のデータは、リソース節約のために、ローカルに格納されない場合があります。この場合、GetChunkByteメソッドは、必要に応じてデータベースから必要なデータを要求します。この処理の一部として、ダイナセット内のすべてのフィールド(LONGまたはLONG RAW型のフィールドを除く)からデータが取り出されて、一貫性検査のためにキャッシュされている値と比較されます。元の部分データのフェッチ後に変更があった場合、GetChunkByteメソッドは操作を停止し、エラーが発生します。中止の場合、戻される文字列はNullになります。

LONGまたはLONG RAW型のフィールドが65280バイト未満の場合は、GetChunkByteメソッドを使用せずにValueプロパティを使用すると、データを速く取り出すことができます。GetChunkByteメソッドは、別名を付けたLONGまたはLONG RAW型のフィールドには使用できません。

この例では、GetChunkByteメソッドを使用してデータベース内のLONG RAW型の列を取り出し、ファイルとして保存する方法を示します。この例では、longrawという列を含んだ表を示すOraDynasetという有効なダイナセットが存在していると想定しています。このコードをコピーして、フォームの定義セクションに貼り付けてください。このプロシージャは、有効なファイル名を使用してコールしてください。

Sub GetChunkByteExample (FName As String)  
 
'Declare various variables 
Dim CurSize As Integer, ChunkSize  As Long 
Dim I As Integer, FNum As Integer, CurChunk() As Byte 
 
'Set the size of each chunk 
ChunkSize = 10240 
'Redim CurChunk Array 
ReDim CurChunk(ChunkSize)  
 
frmChunk.MousePointer = HOURGLASS  
 
'Get a free file number 
FNum = FreeFile  
 
'Open the file 
Open FName For Binary As #FNum  
 
 I = 0 
'Loop through all of the chunks 
'Oracle does not return the size of columns > 64KB. We should loop until the 'length of our block is less than we asked for.
 
Do 
 CurSize = OraDynaset.Fields("type_longraw").GetChunkByte(CurChunk(0), I * ChunkSize, ChunkSize) 
 
If CurSize > 0 AND CurSize < ChunkSize Then 
    ReDim CurChunk(CurSize) 
    CurSize = OraDynaset.Fields("type_longraw").GetChunkByte(CurChunk(0), I * ChunkSize, CurSize) 
 End If 
 Put #FNum, , CurChunk   'Write chunk to file. 
 I = I + 1 
Loop Until CurSize <= 0  
 
'Close the file.  
Close FNum  
 
frmChunk.MousePointer = DEFAULT  
 
End Sub

関連項目:

詳細は、「LONG RAWからLOBまたはBFILEへの移行」を参照してください。