1.1.18 CLOB
CLOBは最大長が定義されていない可変長の文字フィールドです。
CLOBを使ってデータベースへのファイルの保存やファイルの取得ができ、ファイルの表示/編集などが可能になります。RDMLやRDMLXでは、CLOBフィールドはファイル名として処理されます。
一般的な事柄については、「1.1.1 フィールド・タイプについて」を参照してください。
フィールド定義の規則
CLOBフィールドをリポジトリに定義するときの規則は以下のとおりです。
長さ | 長さ指定は不可です。小数はありません。 |
|---|
有効な鍵盤シフト | ブランク、O、E、J、または、W |
|---|
許容される属性 | AB、ASQN、CS、FE、LC、ND、RA、RL、RLTB、SUNI 注:LCとASQNは必ず定義する必要があります。削除はできません。 |
|
|---|
編集オプション | 不可 |
|---|
デフォルト | *SQLNULL。デフォルトでASQNが有効になります。 |
|---|
フィールド定義の注意事項
使用規則
区画タイプ | RDMLX使用可能区画 |
|---|
ファイル | CLOBはRDMLXファイルでのみ使用することができます。CLOBフィールドは実フィールドとして使用することができます。CLOBはキー・フィールドとして使用してはいけません。 |
|---|
論理ビュー | CLOBはキー・フィールドとして使用してはいけません。 |
|---|
仮想フィールド | 適用不可 |
|---|
事前結合フィールド | 適用不可 |
|---|
RDML コマンド | BLOBまたはCLOBフィールドを使用する場合、そのフィールドにはファイル名が含まれています。オブジェクトの実データではないので注意してください。RDMLやRDMLXでは、LANSA LOBフィールドはファイル名として処理されます。 |
|---|
組み込み関数 | CLOBを組み込み関数で使用する場合、CLOBは独自のタイプに分類されるので数値または英数字の引数には無効です。 |
|---|
特殊値 | *SQLNULL、*NAVAIL、*REMEMBERED_VALUE、*EMPTY |
|---|
変換 | CLOBはファイル・ポインターとして扱われます。数値や日付/時間フィールド・タイプへの変換はサポートされていません。詳細については、「フィールド・タイプ変換」を参照してください。 |
|---|
使用に関する注意事項
- CLOB の作業フィールド・タイプはありません。
- CLOBをキーの一部 (例:アクセス経路へのキーなど) にすることはできません。
- CLOB データの表示または印刷はできません。
- CLOB フィールドをリストに追加する場合、そのフィールドにはファイル名が含まれています。オブジェクトの実データではないので注意してください。
- 条件に従って SQL の WHERE 句を生成する場合、このフィールド・タイプは *NULL または *SQLNULL としか比較することはできません。他との比較はすべて拒否されます。
- CLOB タイプのフィールドのデフォルト・プロパティは、.Value ではなく、.FileName です。これは、このフィールドの「値」を変更することは、実際にはそのデフォルト・プロパティつまりファイル名プロパティが変更されるということを明確に示すためです。
- CLOB フィールドは特定の制限に従います。
- このフィールドを SELECT_SQL コマンド内で使用することはできません。
- このフィールドを条件で使用することはできません。ただし、*NULL または *SQLNULL との比較は除きます。
- 一部またはすべての DBMS への変更が記録されない場合があります。したがって、ロールバックの効果がない場合もあります。
- LC 属性は常に有効です。無効にはできません。これは最初はファイル名に影響しますが、最終的にはCLOBの内容にも影響します。
- ASQN 属性は常に有効です。無効にはできません。
- BLOB および CLOBデータ をデータベースから読み取ると、ディレクトリ構造内の LPTH= ディレクトリにファイルが自動的に作成されます (詳細については、「標準X_RUNパラメータ」を参照してください)。
プラットフォームについて
- IBM i で CLOB フィールドを読み取った場合、IFS 上に作成されるファイルの CCSID は、データベース・テーブルのネイティブの CLOB または DBCLOB 列と同じになります。データに対してデータ変換は実行されません。これには、CCSID が 1200 または 13488 の DBCLOB が含まれます。
- プラットフォーム別の考慮事項については、「1.1.1 フィールド・タイプについて」を参照をしてください。
ヒントとテクニック
- BLOBとCLOBフィールドを使用する場合に、それらのフィールドを他のフィールドとは別のファイルに配置してメイン・ファイルと同じキーを使用する設計をお勧めします。これによりプログラマは、BLOBやCLOBデータのアクセスに別々のI/O操作を行わなければならなくなり、このデータの無差別な使用によるデータベース・パフォーマンス上の影響を軽減することができます。またこれは最も移植性の高い設計で、BLOB以外またはCLOB以外のデータに常に迅速にアクセスできるようになります。
- 読み取り時に作成される LOB ディレクトリが LANSA セッションの終了時に削除されないことがあります。特別なプロセス*LOBCLNUPを時々実行することで、LOBディレクトリ構造をクリーンアップできます。このプロセスは、他のユーザーが作成したファイルを削除する十分な権限を持つユーザーが実行する必要があります。例えば、IBM i では次のコマンドを使用して下さい。
LANSA REQUEST(X_RUN) X_RUNADPRM('PROC=*LOBCLNUP')
次のトピックも参照してください。
1.1.17 BLOB