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

前
 
次
 

GetChunkメソッド

説明

LONGまたはLONG RAW型フィールドの全体または一部分のバイトを含む文字列を戻します。

使用方法

data_string = orafield.GetChunk(offset, numbytes)
data_string = orafield.DbGetChunk(offset, numbytes)  

引数

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

引数 説明
offset データのコピー前にスキップするフィールド内のバイト数。
numbytes コピーするバイト数。

備考

GetChunkメソッドは、通常、ローカル・キャッシュから指定されたバイト数を取り出します。キャッシュでデータが見つからない場合、GetChunkメソッドはそれをデータベースに要求します。ダイナセット内のすべてのフィールド(LONGまたはLONG RAW型のフィールドを除く)からデータが取り出されて、一貫性検査のためにキャッシュされている値と比較されます。最後のフェッチ後に変更があった場合、GetChunkメソッドは操作を停止し、エラーが発生してNull文字列が戻されます。

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

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

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

Sub GetChunkExample (FName As String)
 
'Declare various variables
Dim CurSize As Integer, ChunkSize  As Long
Dim I As Integer, FNum As Integer, CurChunk As String
 
'Set the size of each chunk
ChunkSize = 10240
 
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
 CurChunk = OraDynaset.Fields("LONGRAW").GetChunk(I * ChunkSize, ChunkSize)
 CurSize = Len(CurChunk) 'Get the length of the current chunk.
 
 Put #FNum, , CurChunk   'Write chunk to file.
 I = I + 1
Loop Until CurSize < ChunkSize
 
'Close the file.
Close FNum
 
frmChunk.MousePointer = DEFAULT
 
End Sub