1.4 LOBロケータとLOB値

LOBインスタンスはロケータと値を持ちます。LOBロケータは、LOB値が物理的に格納されている場所への参照またはポインタです。LOB値は、LOBに格納されているデータです。

LOBロケータは、BLOBCLOBNCLOBまたはBFILEなど、同じ型のLOBインスタンスに割り当てられます。LOBをパラメータ渡しなどの操作に使用する場合、実際にはLOBロケータを渡すことになります。ほとんどの場合、LOBロケータのセマンティクスに関係なく、アプリケーションでLOBインスタンスを操作できます。一部のプログラミング言語でのポインタとは異なり、LOBロケータを間接参照する必要はありません。

LOBにアクセスして変更するには、次の2種類の方法があります。

1.4.1 ロケータを使用しないLOBの使用

LOBは、VARCHAR2またはRAWデータ型の使用方法と同様の多くの操作で使用できます。このようなLOB操作は、LOBロケータを使用せずに実行できます。

VARCHAR2型およびRAW型に類似したLOB操作には、次のものがあります。
  • SQLおよびPLSQL組込み関数と暗黙的割当て
  • LOBロケータを使用せずにLOB列のLOBデータ全体を挿入または選択できるLOBのデータ・インタフェースは、次のとおりです。
    • LOB列に関連付けられているバインド変数を使用して、CLOBに文字データを挿入するか、BLOBRAWデータを挿入します。たとえば、PLSQLではVARCHAR2バッファをCLOB列に挿入でき、OCIではSQLT_CHAR型のバッファをCLOB列にバインドできます。
    • アプリケーションで出力バッファを定義します。このバッファに、CLOBから選択された文字データまたはBLOBから選択されたRAWデータが保持されます。たとえば、PLSQLでは問合せのCLOB出力をVARCHAR2バッファに選択でき、OCIではCLOB問合せ結果項目をSQLT_CHAR型のバッファに定義できます。

1.4.2 ロケータを使用したLOBの使用

LOBロケータを使用して、データベースで提供されるLOB APIにLOBロケータを渡すことで、LOB値にアクセスして変更できます。これらの操作では、LOBに対する効率的なピース単位の読取りおよび書込みがサポートされます。

アプリケーションでLOBへのランダムまたはピース単位の読取りまたは書込みコールを実行する必要がある場合(つまり、LOB値の一部の読取りまたは書込み操作のオフセットまたは量を指定する必要がある場合)は、このモードを使用する必要があります。