1.4 LOBロケータとLOB値
LOBインスタンスはロケータと値を持ちます。LOBロケータは、LOB値が物理的に格納されている場所への参照またはポインタです。LOB値は、LOBに格納されているデータです。
LOBロケータは、BLOB
、CLOB
、NCLOB
またはBFILE
など、同じ型のLOBインスタンスに割り当てられます。LOBをパラメータ渡しなどの操作に使用する場合、実際にはLOBロケータを渡すことになります。ほとんどの場合、LOBロケータのセマンティクスに関係なく、アプリケーションでLOBインスタンスを操作できます。一部のプログラミング言語でのポインタとは異なり、LOBロケータを間接参照する必要はありません。
LOBにアクセスして変更するには、次の2種類の方法があります。
- ロケータを使用しないLOBの使用
LOBは、VARCHAR2またはRAWデータ型の使用方法と同様の多くの操作で使用できます。このようなLOB操作は、LOBロケータを使用せずに実行できます。 - ロケータを使用したLOBの使用
LOBロケータを使用して、データベースで提供されるLOB APIにLOBロケータを渡すことで、LOB値にアクセスして変更できます。これらの操作では、LOBに対する効率的なピース単位の読取りおよび書込みがサポートされます。
親トピック: ラージ・オブジェクトおよびSecureFilesの概要
1.4.1 ロケータを使用しないLOBの使用
LOBは、VARCHAR2またはRAWデータ型の使用方法と同様の多くの操作で使用できます。このようなLOB操作は、LOBロケータを使用せずに実行できます。
VARCHAR2
型およびRAW
型に類似したLOB操作には、次のものがあります。
- SQLおよびPLSQL組込み関数と暗黙的割当て
- LOBロケータを使用せずにLOB列のLOBデータ全体を挿入または選択できるLOBのデータ・インタフェースは、次のとおりです。
- LOB列に関連付けられているバインド変数を使用して、
CLOB
に文字データを挿入するか、BLOB
にRAW
データを挿入します。たとえば、PLSQLではVARCHAR2
バッファをCLOB
列に挿入でき、OCIではSQLT_CHAR
型のバッファをCLOB
列にバインドできます。 - アプリケーションで出力バッファを定義します。このバッファに、
CLOB
から選択された文字データまたはBLOB
から選択されたRAW
データが保持されます。たとえば、PLSQLでは問合せのCLOB
出力をVARCHAR2
バッファに選択でき、OCIではCLOB
問合せ結果項目をSQLT_CHAR
型のバッファに定義できます。関連項目:
LOBのデータ・インタフェース
- LOB列に関連付けられているバインド変数を使用して、
親トピック: LOBロケータとLOB値
1.4.2 ロケータを使用したLOBの使用
LOBロケータを使用して、データベースで提供されるLOB APIにLOBロケータを渡すことで、LOB値にアクセスして変更できます。これらの操作では、LOBに対する効率的なピース単位の読取りおよび書込みがサポートされます。
アプリケーションでLOBへのランダムまたはピース単位の読取りまたは書込みコールを実行する必要がある場合(つまり、LOB値の一部の読取りまたは書込み操作のオフセットまたは量を指定する必要がある場合)は、このモードを使用する必要があります。
関連項目:
LOB用のロケータ・インタフェース親トピック: LOBロケータとLOB値