Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/select_sql_columns.htm]
現在地:

...

7.109.2 SELECT_SQL の列名と列値

基本ルールは次の通りです。     名前が

名前が '#' で始まる場合、列名を使います。

...

名前が ':'

...

で始まる場合、列値を使います。 

例外として、 WHEREやHAVINGのパラメータ内で使用された場合、"#フィールド"はパラメータ内の唯一の値となります。つまり、この場合は列値を使います。はパラメータ内の唯一の値となります。つまり、この場合は列値を使います。

第2のルールとして、識別子に'#' や ':' がない時は、その識別子がSQL名の場合を除き、列名と解釈されます。SQL名の場合は生成されたコードの中にタイプしたそのままのものが残ります。

曖昧です。 トークン <名前> は SQL キーワードかつ LANSA フィールドです。LANSA フィールドの場合、フィールドの先頭に '#' を付けてください。

これについては、以下で更に詳しく説明します。

SQLキーワードの列名が使用される場合、LANSAでは変換されません。つまり、テーブルがどのように作成されているかによりますが、識別子付きの名前またはLANSA名 (ロングネーム) で明確に指定されている必要があります。例えば #SECTION、これはS_CTIONに識別子が付けられたもので、この名前は、SectionCodeと設定することができます。

ファイルで識別子付きの名前が使用されている場合、次のコードは正しく作動しません。

     Select_Sql Fields(#SECTION) From_Files((PSLMSTX2)) Group_By(SECTION)

...


Add_Entry

...


Endselect

SQLは次のようになります:

SELECT "SectionCode" FROM  "EVDEXLIB"."PersonnelMaster2" GROUP BY  "SECTION"
 

Group_By(SECTION) はそのまま残され、実際の列名のS_CTION や SectionCodeと一致しません。 このコードを最も順応性のある方法(注 2参照)で修正するには、以下のように名前の先頭に

このコードを最も順応性のある方法(注2参照)で修正するには、以下のように名前の先頭に '#' を付けます。

     Select_Sql Fields(#SECTION) From_Files((PSLMSTX2)) Group_By(#SECTION)

...


Add_Entry
Endselect

 
SQLは次のようになります:

SELECT "SectionCode" FROM  "EVDEXLIB"."PersonnelMaster2" GROUP BY  "SectionCode"

ただし、次の例の EMPNOのようにフィールド名がSQLキーワードでない場合は、'#'が付いていてもいなくても自動的にフィールド名が実際の列名に変換されます。

     Select_Sql Fields(#EMPNO) From_Files((PSLMSTX2)) Group_By(EMPNO)
Add_Entry

...


Endselect

EMPNOのロングネームがEmployeeNumberで、PSLMSTX2で名前 (ロングネーム) が許可されている場合は、Group_By のEMPNOはEmployeeNumberとなります。SQLは次のようになります:

     SELECT "EmployeeNumber" FROM

...

 "EVDEXLIB"."PersonnelMaster2" GROUP BY

...

 "EmployeeNumber"

...

Note

...

注意1:'# フィールド' は、生成されたSQLの全てのパラメータで列名が使用されることを意味します。例外として、WHEREやHAVING内で使用される唯一の値のときは、そのフィールドの実行時の内容が生成されます。自由形式のSELECT_SQL - USING パラメータ - はこれに含まれません。このUSINGパラメータを使用した際の動作については、「7.110.1 自由形式のSELECT_SQLのパラメータ」を参照してください。

...

Note

注意2:ここで説明されている'順応性のある方法'とは、Windowsの古い形式の列名の識別子が使用された場合、ジェネレーターは自動的にWindowsと Linuxには"S_CTION" を、そして IBM i には"SECTION" を使用するということです。

...