BLOB および CLOB 変数の設定

PL/I アプリケーションを OCI 向けにコンパイルするには、次のように BLOB 変数と CLOB 変数を宣言します。

    DCL TEST_BLOB SQL TYPE IS BLOB(4K);
    DCL TEST_CLOB SQL TYPE IS CLOB(2M);

BLOB または CLOB ホスト変数のサイズをキロバイト (K)、メガバイト (M)、ギガバイト (G)、または整数値で指定できます。Unicode CLOB では、DBCLOB タイプを使用します。ラージ オブジェクト (LOB) ホスト変数は、次の宣言と同等です。

DCL 1 name,
     5 name_length      fixed bin(31),
     5 name_data        char(<size>);

ここで name_data は、LOB のサイズが 32K を超える場合に適切である限り CHAR の配列が可能です。

次の例は、LOB ロケーターのホスト変数を宣言する方法を示しています。

DCL TEST_BLOB_LOC SQL TYPE IS BLOB_LOCATOR;
DCL TEST_CLOB_LOC SQL TYPE IS CLOB_LOCATOR;

ロケーターのホスト変数は事実上 LOB 値へのポインターで、通常は LOB ホスト変数を使用可能であれば使うことができます。ロケーターを使う利点は、アプリケーションとサーバー間で LOB の値全体が転送されないことです。たとえば、アプリケーションは BLOB 値を行から行に複製する場合があります。

exec sql
    select lob_col into :test_blob_loc from mytable where key = :k1;
exec sql 
    update table2 set lob2_col = :test_blob_loc
    where key2 = :k2;