TLOBLocator

Properties                Methods

Top  Previous  Next

Unit

Oracle

説明

Oracle8は新しくより柔軟なlongデータ型、LOB (Large Object)を提供します。現在、3つの違う種類のLOBがあります:

w                CLOB                Character LOB, Longに類似しています

w                BLOB                Binary LOB, Long Rawに類似しています

w                BFile                Binary File, データベースサーバー上のファイルにアクセスします

直接LOBカラムのデータにアクセスすることは稀でしょう。代わりにそんなカラムにあるデータを読み書きするためにはLOB Locatorを使うことになります。LOB LocatorLOBカラムを持ち、実際のデータを指し示すレコードに格納されています。セレクトリストにLOBカラムを含むとき、データではなくLOB Locatorをフェッチすることになります。LOB Locatorは、LOBの強力な機能全てを使えるようにするTLOBLocatorオブジェクト内にカプセル化されています。

LOBカラムにnull値が含まれている時、レコードにはLOB Locatorが含まれません。 それゆえnull LOBを選択するとき、LOBデータにアクセスすることは出来ません。Null LOBを更新する時は、最初に空のLOB(null LOBとは全く違ったものです)を含むカラムを更新する必要があります。そしてこの新しく作られたLOB Locatorを使って実際のデータを書き込みます。LOBカラムを持つ新しいレコードを挿入する時、同じ仕組みを適用します。CreateTemporary コンストラクタで作られた一時的なLOBにはこの制限はありません。LOBを作り、データを書き込み、続けてInsertUpdateそしてPL/SQLコールのためにこれを使います。

3通りの方法でTLOBlocatorオブジェクトを取得できます:

w        TLOBLocator.CreateTLOBLocator.CreateTemporaryで作る
w        LOBカラムを選択しTOracleQuery.LOBFieldメソッドを使う
w        TOracleObject.LOBAttr メソッドを通じてオブジェクトのLOB属性にアクセスする

TLOBLocatorTstreamオブジェクトの子孫なので、慣れ親しんだRead, WriteSeekメソッドを使ってLOBのデータにアクセスすることが出来ます。Sizeプロパティも同様です。

TLOBLocatorオブジェクトを使う以外にも、Direct Oracle AccessにはLOBのデータにアクセスする更に二つの方法がにあります:

w        sselect命令の後にTOracleQuery.Field メソッドを使います。これはLongLong Rawと全く同じように動作します。 これらメソッドはLOBデータを取得するためにselect命令内にフェッチされるLOB Locatorを使います。
w        TOracleDataSetDelphiBLOBフィールドとしてLOBを透過的に扱います。TemporaryLOB Preference もしそしてどのようにLOBフィールドつきのデータセットをポストした時に、一時的なLOBが扱われるのかをセッションレベルで定義します。

LOBに関する詳しい情報は、Oracle"Server Application Developer's Guide"をご覧ください。