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)、または整数値で指定できます。ユニコード 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;