適用対象
説明
BLOB、CLOBまたは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 |
読込みデータ長の合計数を表すInteger。OraBLOBまたは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