Versions Compared

Key

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

7.109.1 SELECT_SQL のパラメータ

SELECT_SQL_P#DISTINCT

SELECT_SQL_P#FIELDS

DISTINCT

FIELDS

FROMSELECT_SQL_P#FROM_FILES

SELECTGROUP_SQL_P#GROUP_BY

SELECT_SQL_P#HAVING

HAVING

IOSELECT_SQL_P#IO_ERROR

SELECTIO_SQL_P#IO_STATUS

SELECT_SQL_P#ORDERORDER_BYSELECT_SQL_P#WHERE

WHERE

また「7.109.2 SELECT_SQL の列名と列値」も参照してください。


Anchor
FIELDS
FIELDS
FIELDS

列(フィールド)とそれに関連付けられた「SQLソース」またはファンクションを指定します。 

...

Anchor
FROM_FILES
FROM_FILES
FROM_FILES

I/Oコマンドでのファイル名の指定」を参照してください。

Note
title注意

このコマンドで使用するファイル(テーブル)名を最大20個指定できます。

Note
title注意

:他のデータベースの外部ファイルにアクセスする場合、LANSAは、外部ファイルをLANSAにロードするために使用されたデータベース接続情報を見つけます。これは、DEFINE_DB_SERVERおよびCONNECT_FILE BIFを使用することによって、さらに洗練することができます。

...

     . . . FROM_FILES((ORDLIN A) (ORDDTL B)) WHERE('A.CUSTNO = B.CUSTNO')

移植性に関する考慮事項

Visual LANSAでは、テーブル名に@#$が使用されません。この変換は、FROM_FILESパラメータに対して行われ、他のパラメータ(WHEREパラメータなど)のテーブル名に対しては行われません。そのため、SQLがすべてのLANSAプラットフォームで動作するようにするには、上記の2番目の例のように、必ず相関を使用してください。

Visual LANSAでは、Visual LANSA外部ファイルを使用して複数のデータベースにアクセスすることができます。Visual LANSA外部ファイルは、SELECT_SQLで使用できますが、すべて同じデータベースのものでなければなりません。Visual LANSA外部ファイルがLANSAファイルと同じデータベースにある場合、同じSELECT_SQLコマンドで2つのファイルを使用できます。

...

SQL言語では、SQL構文として解釈される可能性のある識別子を二重引用符で囲みます。LNSAでは、二重引用符で囲まれたテキストに対して何の処理も行われません。これは二重引用符(")であり、2つの一重引用符('')ではないことに注意してください。

移植性に関する考慮事項

WHERE パラメータのLANSAフィールドが、FROM_FILESパラメータで指定されたいずれかのファイルのものであると認識されている限り、そのフィールド名は、二重引用符で囲まれた列名としてSQLステートメントに作成されます。この列名が必ずしもフィールド名と同じでないことに注意してください。一般 に、このような状況は外部ファイルで起こりますが、LANSAファイルの特定のフィールド名でも起こることがあります。「フィールド名の特殊文字の変換」を参照してください。 

ただし、引用符で囲まれていないLANSAフィールド名がSQLキーワードと競合する場合は例外です。この場合、フィールド名は変換されません。詳細については、「SQL/ODBC の文法:キーワードの重複」を参照してください。 例えば、SECTIONがSECTAB内のLANSAフィールドの場合、このフィールドは列S_CTIONとして作成されます。 WHEREパラメータがWHERE( 'SECTION = ''1''')として指定されている場合、SECTIONは変更されないため、実行時にSQL構文エラーが発生します。 これを回避するには、相関を使用して、SECTIONをSQLキーワードとして使用せず、この列にアクセスしようとしていることをLANSAが認識できるようにします。すなわち、FROM_FILES((SECTAB SEC)) WHERE('SEC.SECTION = ''1''')と指定します。

同じLANSAフィールドを含む複数のファイルから選択する場合、列名がファイルによって異なることがあります。「フィールド名の特殊文字の変換」を参照してください。この場合、開発者は2通りの方法でLANSAが生成するSQL WHERE句を制御できます。その1つは、LANSAがそのファイルの規則に従ってフィールド名を変更できるよう相関(FROM_FILESパラメータを参照)を使用する方法です。2つ目は、列名を使用して、それを二重引用符で囲む方法です。 

WHERE パラメータでフィールド名を使用する場合、LANSAがそのフィールド名を認識し、適切に変換できるよう、フィールド名の前後にスペースを残すことをお勧めします。例えば、WHERE( 'a=b')の代わりにWHERE ( 'a = b' )と指定します。

...

     CHANGE FIELDS(#SELECTION) TO('STATE LIKE ''B!_%'' ESCAPE ''!''')
Note
title注意

注意:この例では、エスケープ文字として感嘆符記号を指定していますが、ASCIIテーブルの127以下の任意の「標準」文字を使用できます(文字%、_、 [は、すべてのDBMSシステムで使用できるわけではないため、これらの記号の使用はお勧めしません)。  

これは、ASA、DB2400、SQL Server、およびOracleで検査済みです。MS Accessのみが例外で、代わりにエスケープする文字を[]で囲む必要があります。例えば、WHERE STATE LIKE 'B[_]%'と 指定します。 

...

WHERE句に指定された名前を使用するよう指定するには、フィールド名の直前にコロン(:)を挿入します。このとき、コロンとフィールド名の間にはスペースを入れません(フィールド名が6文字を超えていると、LANSA/AD RPGファンクションで予期しない結果になります)。 

移植性に関する考慮事項

LANSA では、WHERE句内で変数比較値を保管するために使用するフィールドが変換されません。すなわち、この方法でフィールドを使用する場合は、フィールド名が6文字以下でなければなりません(これは、LANSA/ADの生成済みRPGでは、フィールド名が実際の名前で使用されるためです)。

LANSA/ADのRPGファンクションでは、コロンとフィールド名の間にスペースを入れることができますが、生成済みCコードでは、スペースは許可されません。可搬性を確 保するために、コロンとフィールド名の間にスペースを残さないでください。

...

     DEFINE      #KARTIC REFFLD (#ARTICO)
DEFINE      #KADTRG REFFLD (#MADTRG)
. . . WHERE ('ARTICO = :KARTIC AND MADTRG > :KADTRG')

条件の指定の詳細については、「条件および式の指定」を参照してください。この句の構造に関する詳細については、SQLのガイドを参照してください。

...

I/O戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、そのフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。 

値については、「I/Oコマンド でのファイル・キー・リストの指定」を参照してください。

Anchor
IO_ERROR
IO_ERROR
IO_ERROR

...