column

SQLRecord フィールドの column プロパティーは、フィールドに関連付けられているデータベース表列の名前を指定します。

デフォルトは、フィールドの名前です。EGL は、列名および関連フィールドを使用してデフォルトの SQL ステートメントを作成します (『SQL データ・アクセス』を参照)。

以下の例に示すように、列名には、引用符付きストリング、文字変数、または連結を使用することができます。
Record CustomerRecordPart type SQLRecord {tableNames = [["CUSTOMER"]]}
   customerNumber INT    {column = "Column" :: "01"};
   ...
end
さらに、以下の例のように、引用符付きストリング自体が複雑になることもあります。
record Q type SQLRecord
  myField int { column = "COLUMN01 || 10 + COLUMN02 * 5" };
end
制約事項: 上に示したような複雑な column プロパティー値にアクセスする EGL add または replace ステートメントをコーディングする場合、生成される SQL INSERT および SQL UPDATE ステートメントが無効になることがあります。

SELECT ステートメントの INTO 文節を生成するために複雑な値をコーディングする場合は、独自の INTO 文節を作成することを検討してください。詳しくは、『SQL の get に関する考慮事項』に記載されている SELECT ステートメントの制約事項を参照してください。

column プロパティーの値に修飾子が含まれることがあります。修飾子は、テーブル名か、スキーマ名にテーブル名が続いたものである場合があります。以下の例では、MYSCHEMA という名前のスキーマと、CUSTOMER という名前のテーブルを参照しています。
Record CustomerRecordPart type SQLRecord {tableNames = [["MYSCHEMA.CUSTOMER"]]}
   customerNumber INT    {column = "MYSCHEMA.CUSTOMER.Column01"};
   ...
end
次のような場合について考えてみます。ユーザーのコードには、SQL レコードを使用する get ステートメントまたは open ステートメントがあり、明示的な SQL を含み、INTO 文節がありません。例えば、このような get ステートメントを含む EGL コードを以下に示します。
customer CustomerRecord{};
get customer with #sql{
   select MySCHEMA.CUSTOMER.Column01
   from MYSCHEMA.CUSTOMER
   where MYSCHEMA.CUSTOMER.Column02 = "AZ"}; 

今ここで説明した get ステートメントまたは open ステートメントでは、SQL の SELECT 文節の列名に使用される修飾は、レコード・パーツ内の対応するフィールドで使用される修飾と一致する必要があります。

また、列名が以下のいずれかの SQL 予約語である場合は、特殊な構文が必要です。
以下の例に示すように、これらの名前はそれぞれ 2 組の引用符で囲み、内側の各引用符の前にエスケープ文字 (¥) を置く必要があります。
  column = "¥"SELECT¥""

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


フィードバック