SQL 項目のプロパティー

SQL 項目のプロパティーは、 項目が SQLRecord 型のレコード内で使用するときに意味のある特性を指定します。ただし、 デフォルト値が用意されているため、SQL 項目のプロパティーを指定する必要はありません。

プロパティーには、次のものがあります。

column = "columnName"

column プロパティー。項目に関連付けられているデータベース表の列の名前を示します。デフォルトは、項目の名前です。列および関連する項目は、デフォルトの SQL ステートメントに影響を与えます。詳細については、『SQL サポート』を参照してください。

"columnName" を、 以下の例のように引用符付きストリング、文字型の変数、または連結に置き換えます。
  column = "Column" + "01"
列名が以下の SQL 予約語のいずれかである場合、特別な構文が適用されます。
  • CALL
  • COLUMNS
  • FROM
  • GROUP
  • HAVING
  • INSERT
  • ORDER
  • SELECT
  • SET
  • UPDATE
  • VALUES
  • WHERE
以下の例に示すように、これらの名前は二重引用符で囲み、 内部の各引用符の前にエスケープ文字 (¥) を付ける必要があります。
  column = "¥"SELECT¥""

(これらの予約語をテーブル名として使用する場合も同様です。)

isNullable = yes、isNullable = no

プロパティー isNullable は、 項目と関連付けられたテーブル列が NULL に設定できる場合に適切なように NULL 設定可能かどうかを示します。有効な値は yes (デフォルト) と no です。

isNullableyes に設定された場合にのみ、SQL レコードの任意の項目に対して以下の機能が使用可能です。
  • プログラムがデータベースから項目へ NULL 値を受け入れることができる。
  • プログラムが set 文を使用して、『set』に説明しているように 項目を NULL に設定することができる。『データ初期化』に説明しているように項目が初期化されます。
  • プログラムが if 文を使用して、項目が NULL に設定されているかどうかをテストすることができる。
  • COBOL プログラムは if 文を使用して、 データベースから受け取ったデータが切り捨てられたかどうかをテストすることができる。この機能は、isNullable の値にかかわらず Java™ プログラムで使用可能です。

isReadOnly = no、isReadOnly = yes

isReadOnly プロパティー。データベースに書き込みを行うデフォルト SQL ステートメント、または FOR UPDATE OF 文節を含むデフォルト SQL ステートメントから、項目および関連する列を削除するかどうかを示します。デフォルト値は no です。ただし、次のいずれかの場合、EGL では、構造体項目が「読み取り専用」として扱われます。
  • SQL レコードのプロパティー key は、構造体項目と関連付けられている列がキー欄であることを示す。
  • SQL レコード・パーツが複数のテーブルに関連付けられている。
  • SQL 列名が式である。

maxLen = integer

プロパティー maxLen は、データベース列に書き込まれるフィールド・テキストの最大長を指定します。可能な場合、このプロパティーのデフォルト値がフィールド長になりますが、 フィールドが STRING 型である場合、デフォルト値は存在しません。

EGL 生成の COBOL コードに関して、以下の項目が該当します。
  • このプロパティーは、STRING 型のフィールドにおいて必須です。
  • 影響する出力以外に、プロパティー maxLen は、データベースの列の値を読み取るために割り当てられた入力バッファーの長さを指定します。データベース読み取り中に、列の値が指定された maxLen より長くなる場合、この値は切り捨てられます。

    列に対して定義された長さに等しくなるように maxlen を指定して、確実にその値の全体が列から取得できるようにします。

persistent = yes, persistent = no

プロパティー persistent は、フィールドが SQL レコード用に生成された暗黙の SQL ステートメントに含まれているかどうかを示します。 この値が yes の場合、以下のようなケースでの実行時にエラーが発生します。
  • ユーザーのコードが暗黙の SQL ステートメントに依存し、
  • どの列もフィールド固有の column プロパティーの値に一致しない (デフォルト値はフィールド名)。

一時プログラム変数を、データベース内の変数に対応する列を持たない SQL 行に関連付けたい場合は、persistentno に設定します。例えば、プログラムがその行 を変更したかどうかを示す変数が必要な場合です。

暗黙の SQL ステートメントの詳細については、『SQL サポート』を参照してください。

sqlDataCode = code

sqlDataCode プロパティーの値。レコード項目に関連付けられている SQL データ型を示す数字。 SQL データ・コードは、宣言時、検証時、または生成したプログラムの実行時に、データベース管理システムにアクセスした際に使用されます。

プロパティー sqlDataCode は、VisualAge® Generator 互換性のための環境をセットアップした場合にのみ使用可能です。詳細については、『VisualAge Generator との互換性』を参照してください。

デフォルト値は、次の表に示すように、レコード項目のプリミティブ型と長さによって決まります。詳細については、『SQL データ・コード』を参照してください。

EGL プリミティブ型 長さ SQL データ・コード
BIN 4 501
9 497
CHAR <=254 453
>254 および <=4000 449
>4000 457
DBCHAR <=127 469
>127 および <=2000 465
>2000 473
DECIMAL any 485
HEX any 481
UNICODE <=127 469
>127 および <=2000 465
>2000 473

sqlVariableLen = no, sqlVariableLen = yes

プロパティー sqlVariableLen (以前の sqlVar プロパティー) の値は、EGL ランタイムがデータを SQL データベースに書き込む前に 文字フィールドの末尾ブランクと NULL が切り捨てられるかどうかを示します。このプロパティーは非文字データに影響を与えません。

対応する SQL テーブル列が varchar または vargraphic SQL データ型である場合は yes を指定します。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.