Page History
7.109.1 SELECT_SQL のパラメータ
また「7.109.2 SELECT_SQL の列名と列値」も参照してください。
|
|---|
列(フィールド)とそれに関連付けられた「SQLソース」またはファンクションを指定します。
...
この場合、SQLテーブルの列DEPTMENTがRDML変数#DEPTMENTに返され、SQLテーブルのフィールドSALARYの平均がRDML変数 #VALUE1に返されます。また、合計が#VALUE2に返され、最大値が#VALUE3に返されます。
|
|---|
「I/Oコマンドでのファイル名の指定」を参照してください。「I/O コマンドでのファイル名の指定」を参照してください。
| Note |
|---|
注注意: このコマンドで使用するファイル(テーブル)名を最大20個指定できます。 |
| Note |
|---|
注注意: 他のデータベースの外部ファイルにアクセスする場合、LANSAは、外部ファイルをLANSAにロードするために使用されたデータベース接続情報を見つけます。これは、DEFINE_DB_SERVERおよびCONNECT_FILE BIFを使用することによって、さらに洗練することができます。 |
...
移植性に関する考慮事項 | Visual LANSAでは、テーブル名に@#$が使用されません。この変換は、FROM_FILESパラメータに対して行われ、他のパラメータ(WHEREパラメータなど)のテーブル名に対しては行われません。そのため、SQLがすべてのLANSAプラットフォームで動作するようにするには、上記の2番目の例のように、必ず相関を使用してください。 Visual LANSAでは、Visual LANSA外部ファイルを使用して複数のデータベースにアクセスすることができます。Visual LANSA外部ファイルは、SELECT_SQLで使用できますが、すべて同じデータベースのものでなければなりません。Visual LANSA外部ファイルがLANSAファイルと同じデータベースにある場合、同じSELECT_SQLコマンドで2つのファイルを使用できます。 |
|
|---|
SQL_SELECTのWHERE句は、以下に示すように引用符で囲む必要があります。
...
移植性に関する考慮事項 | 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 ''!''')| Infonote |
|---|
注:注意:この例では、エスケープ文字として感嘆符記号を指定していますが、ASCIIテーブルの127以下の任意の「標準」文字を使用できます(文字%、_、 [は、すべてのDBMSシステムで使用できるわけではないため、これらの記号の使用はお勧めしません)。 これは、ASA、DB2400、SQL Server、およびOracleで検査済みです。MS Accessのみが例外で、代わりにエスケープする文字を[]で囲む必要があります。例えば、WHERE STATE LIKE 'B[_]%'と 指定します。 |
...
DEFINE #KARTIC REFFLD (#ARTICO)
DEFINE #KADTRG REFFLD (#MADTRG)
. . . WHERE ('ARTICO = :KARTIC AND MADTRG > :KADTRG')
条件の指定の詳細については、「条件および式の指定」を参照してください。この句の構造に関する詳細については、SQLのガイドを参照してください。条件の指定の詳細については、「条件および式の指定」を参照してください。この句の構造に関する詳細については、SQLのガイドを参照してください。
Unicode フィールドを含むRDMLX IBM i外部ファイル
...
- 比較にLANSAフィールドを使用します。例えば、WHERE('MYUNIGRPH = :STD_TEXT')のように指定します。
- リテラルをUnicode (UX'ssss')リテラルとして渡します。例えば、以下の指定があるとします。
WHERE('UNIFLD LIKE 'C%')
これを以下のように指定します。
WHERE('UNIFLD LIKE UNIFLD LIKE UX''00430025'''). - SQLファンクションを使用してリテラルまたは列を変換します。これにより、Unicode式になります。例えば、CHARFLDがChar タイプの列の場合、以下の指定があるとします。
WHERE('UNIFLD = CHARFLD')
これを以下のように指定します。
WHERE('UNIFLD = CAST(CHARFLD AS GRAPHIC(6) CCSID 13488)')
詳細については、IBMマニュアル『DB2 UDB for iSeries SQL Reference』を参照してください。
|
|---|
個々の行ではなく、行のグループの特性を見つけるために使用します。グループ化はソートではなく、選択された各行をグループに追加することであり、グループをSQLで処理することにより、そのグループの特性を導き出すことができます。
選択された行のグループ化の基準にする列を指定します。1列以上指定する場合、そのデータを分けるためにコンマを使用する必要があります。例:GROUP_BY('EMPTSYEAR,EMPTSWEEK')
|
|---|
GROUP_BY句に基づいて選択されたグループの検索条件を指定するために使用します。HAVINGパラメータによって、この句で指定する条件に適合するグループのみが必要であることを示します。すなわち、HAVING句では、グループに含まれる個々の行のプロパティではなく、各グループのプロパティを検査します。
HAVING句には、WHEREパラメータで使用できるものと同様の検索条件を指定できます。
|
|---|
選択された行の取得順序を指定するために使用します。ORDER BYパラメータは、GROUP_BYパラメータと同じ方法で使用できます。
...
例: ORDER_BY('SURNAME,GIVENAME')
|
|---|
SELECT_SQLの結果で重複した行が必要ない場合は、このパラメータに*YESを指定します。
結果のテーブルで重複した行が必要な場合は、*NOを指定します。
|
|---|
I/O操作の結果の「戻りコード」を受け取るフィールドの名前を指定します。
...
I/O戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、そのフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。 値については、「I/Oコマンド でのファイル・キー・リストの指定」を参照してください。
値については、「I/Oコマンド でのファイル・キー・リストの指定」を参照してください。
|
|---|
コマンドの実行時にI/Oエラーが発生した場合に実行するアクションを指定します。
...