Page History
7.110.1 自由形式のSELECT_SQLのパラメータ
|
|---|
USINGパラメータで指定したSQLコマンドの結果を受け取るフィールドを指定します。
...
SQL_SELECTのUSINGパラメータには、有効な任意の「拡張可能な式」を指定できます。文字列を区切る際は一重引用符を使用することをお勧めします。これにより、二重引用符を、SQL識別子を囲むために使用できるようになります。すなわち、文字列リテラルを囲む一重引用符を倍にする必要があります。最初および2番目の例は、SQLリテラルを終了するための最後の一重引用符が異なる方法(''''と"'")で指定されていることを除き、同じ結果になります。4番目の例では、値と引用符を1つの作業フィールド内で指定しています。これが最もわかりやすく保守しやすい方法でしょう。
...
| Info |
|---|
WHEREパラメータとは異なり、USINGパラメータでは、埋め込みフィールド (KARTICなど) はサポートされません。 |
移植性に関する考慮事項 | Visual LANSAでは、Visual LANSA外部ファイルを使用して複数のデータベースにアクセスすることができます。Visual LANSA外部ファイルは、SELECT_SQLで使用できますが、すべて同じデータベースのものでなければなりません。Visual LANSA外部ファイルがLANSAファイルと同じデータベースにある場合、同じSELECT_SQLコマンドで2つのファイルを使用できます。 例えば、名前に @、#、または $ が含まれている場合、SQLテーブル名がLANSAファイル名と異なることがあります。この名前は、オペレーティング・システムによっても異なる可能性があります。SQLコマンドを複数のプラットフォームで実行する場合は、テーブル名を同じにするか、テーブル名をUSINGパラメータで変数として指定してください。 |
...
CHANGE FIELDS(#TABLE) TO('SELECT "CUSTNUM" FROM "XDEMOLIB"."CUSTOMERS" ')
CHANGE FIELDS(#SELECTION) TO('WHERE STATE LIKE ''B!_%'' ESCAPE ''!''')
SELECT_SQL FIELDS(#CUSTNUM") USING(#TABLE + #SELECTION)
DISPLAY FIELDS(#CUSTNUM)
ENDSELECT| Note | ||
|---|---|---|
| ||
注意:この例では、エスケープ文字として感嘆符記号を指定していますが、ASCIIテーブルの127以下の任意の「標準」文字を使用できます(文字%、_、[は、すべてのDBMSシステムで使用できるわけではないため、これらの記号の使用はお勧めしません)。 これは、ASA、DB2400、SQL Server、およびOracleで検査済みです。MS Accessのみが例外で、代わりにエスケープする文字を[]で囲む必要があります。例えば、WHERE "STATE" LIKE 'B[_]%' と指定します。 |
条件の指定の詳細については、「条件および式の指定」を参照してください。この句の構造に関する詳細については、SQLのガイドを参照してください。
...
|
|---|
「I/Oコマンドでのファイル名の指定」を参照してください。
これは、LANSAで解析される形式のSELECT_SQLコマンドにおける同名のパラメータとは異なり、任意指定のパラメータです。これは、ここで使用されるファイル名が、実行時にアクセスされるファイルに影響しないためです。このパラメータには2つの目的があり、その1つは、他のデータベース内の外部ファイルへのアクセス時に使用することです。ファイル名を指定することで、LANSAは、外部ファイルをLANSAにロードするために使用されたデータベース接続情報を見つけることができます。これは、DEFINE_DB_SERVERおよびCONNECT_FILE BIFを使用することによって、さらに洗練することができます。
2つ目の目的は、クロスリファレンス情報を生成し、USINGパラメータのファイルの使用を追跡できるようにすることです。この情報は、後で影響分析に使用できますが、明らかに手作業によるクロスリファレンスであるため、プログラマが最新の状態に保つ必要があります。これについて、プログラム文書化規則にすることをお勧めします。
例
. . . FROM_FILES(ORDLIN)
. . . USING('SELECT * FROM "MYLIB"."ORDLIN", "MYLIB"."ORDDTL"
. . . . . . WHERE "MYLIB"."ORDLIN"."CUSTNO" = "MYLIB"."ORDDTL"."CUSTNO"')
|
|---|
...
I/O戻りコードを受け取るフィールドとしてユーザー・フィールドを指定する場合、このフィールドは、長さ2文字の英数字フィールドである必要があります。ユーザー・フィールドを指定した場合も、特別なフィールド#IO$STSは更新されます。
値については、「I/O コマンド戻りコード表」を参照してください。
|
|---|
...