使用方法
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