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

前
 
次
 

Read(OraLOB/BFILE)メソッド

説明

BLOBCLOBまたはBFILE値の指定部分をバッファに読み込みます。読込みデータ長の合計数を戻します。

使用方法

amount_read = OraBlob.Read buffer, chunksize
amount_read = OraClob.Read buffer, chunksize
amount_read = OraBfile.Read buffer, chunksize

引数

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

引数 説明
[out] buffer OraCLOBの場合はVariant型の文字配列、OraBLOBまたはピースの読込み元のOraBFILEの場合はVariant型のバイト配列。
[in] [オプション] chunksize 読取り量を指定するためのInteger。デフォルト値は、LOBのサイズです。OraBLOBまたはOraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。
[out] amount_read 読込みデータ長の合計数を表すIntegerOraBLOBまたはOraBFILEの場合はバイト数、OraCLOBの場合は文字数を示します。

備考

Offsetプロパティで指定されたオフセットからLOBデータまたはBFILEデータを読み込みます。複数ピースの読込み操作の場合は、PollingAmountプロパティを読込みデータ長の合計数の値に設定し、Statusプロパティをチェックして各ピースの操作が正常に実行されたことを確認する必要があります。


注意:

LOBの一部を読み込む場合は、chunksizeパラメータを使用せず、PollingAmountプロパティを設定することをお薦めします。これによって、LOB全体が読み込まれる前に別のLOBメソッドが実行された場合に発生するエラーを回避できます。

「LOBデータ型の例で使用されているスキーマ・オブジェクト」の説明に従ってOraLOBスキーマ・オブジェクトをインストールしていることを確認してください。

例: LOBの複数ピース読取り

Dim OraSession As OraSession 
Dim OraDatabase As OraDatabase 
Dim OraDynaset As OraDynaset 
Dim PartImage As OraBlob 
Dim chunksize As Long 
Dim AmountRead As Long 
Dim buffer As Variant 
Dim buf As String 
 
'Create the OraSession Object. 
Set OraSession = CreateObject("OracleInProcServer.XOraSession") 
 
'Create the OraDatabase Object by opening a connection to Oracle. 
Set OraDatabase = OraSession.OpenDatabase("ExampleDb","scott/tiger", 0&)  
 
'Create the OraDynaset Object. 
Set OraDynaset = OraDatabase.CreateDynaset("select * from part", 0&) 
 
'Get OraBlob from OraDynaset 
Set PartImage = OraDynaset.Fields("part_image").Value 
 
'Set Offset and PollingAmount property for piecewise Read operation 
PartImage.offset = 1 
PartImage.PollingAmount = PartImage.Size 
chunksize = 50000 
 
'Get a free file number 
FNum = FreeFile 
 
'Open the file 
Open "image.dat" For Binary As #FNum 
 
'Do the first read on PartImage, buffer must be a variant 
AmountRead = PartImage.Read(buffer, chunksize) 
 
'put will not allow Variant type 
buf = buffer 
Put #FNum, , buf 
 
' Check for the Status property for polling read operation 
While PartImage.Status = ORALOB_NEED_DATA 
    AmountRead = PartImage.Read(buffer, chunksize) 
    buf = buffer 
    Put #FNum, , buf 
Wend 
 
Close FNum 

例: LOBの単一ピース読取り

Dim OraSession As OraSession 
Dim OraDatabase As OraDatabase 
Dim PartDesc As OraClob 
Dim AmountRead As Long 
Dim buffer As Variant 
Dim buf As String 
 
'Create the OraSession Object. 
Set OraSession = CreateObject("OracleInProcServer.XOraSession") 
 
'Create the OraDatabase Object. 
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)
 
'Add PartDesc as an Output parameter and set its initial value. 
OraDatabase.Parameters.Add "PartDesc", Null, ORAPARM_OUTPUT 
OraDatabase.Parameters("PartDesc").ServerType = ORATYPE_CLOB 
 
'Execute the statement returning 'PartDesc' 
OraDatabase.ExecuteSQL ("BEGIN select part_desc into :PARTDESC from" & _ 
             "part where part_id = 1 for update NOWAIT; END;") 
 
'Get 'PartDesc' from Parameters collection 
Set PartDesc = OraDatabase.Parameters("PartDesc").Value 
 
'Get a free file number 
FNum = FreeFile 
 
'Open the file. 
 
Open "Desc.Dat" For Binary As #FNum 
 
'Read entire CLOB value, buffer must be a Variant 
AmountRead = PartDesc.Read(buffer) 
 
'put will not allow Variant type 
buf = buffer 
Put #FNum, , buf 
 
Close FNum