|
Example - Selecting a LOB Locator |
Top Previous Next |
|
もうひとつのLOBカラムを持ったselect命令を実行したあと、Fieldメソッドを使ってデータにアクセスすることが出来ます。 CLOBは文字列として返され、BLOBとBfileはバイトのゼロベースバリアント配列として返されます。GetLongField メソッドを使ってLOBデータの特定の一部にアクセスすることが出来ます。 これら全てはLongかLong Rawカラムにアクセスするのと全く同じです。 LOBの実際のデータは、それにアクセスした瞬間サーバーからフェッチされるだけです。データは先読みされず、クライアント上にバッファされることもありません。 選択されたLOBカラムのLOB Locatorを取得することも出来ます。 そうするためにTOracleQueryの LOBFieldメソッドを使ってください。このメソッドはパラメーターとしてLOBフィールドの名前かインデックスを取ります。そしてLOBにアクセスするため使うことのできるTLOBLocatorインスタンスを返します。 TLOBLocatorの IsNulメソッドを使うことによってLOBカラムがnullかどうかをテストすることが出来ます。もしそれがnullならば、LOBデータにアクセス出来ません。 TLOBLocatorオブジェクトはTstreamの子孫なので、LOBのデータを取得するために慣れ親しんだSeek, ReadとSizeメソッドを使うことが出来ます。次はLOBの最後の100バイトを取得する方法のサンプルです: var LOB: TLOBLocator; Buffer: array[0..99] of Byte; begin // select lobcolumn from lobtable where id = 1 with LOBQuery do begin Execute; LOB := LOBField('lobcolumn'); if not LOB.IsNull then begin LOB.Seek(-100, soFromEnd); LOB.Read(Buffer, 100); end; end; end; |