Versions Compared

Key

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

7.110.1 自由形式のSELECT_SQLのパラメータ

SELECT_SQL_FREE_P#FIELDS

SELECT_SQL_FREE_P#FROM_FILES

SELECT_SQL_FREE_P#IO_ERROR

SELECT_SQL_FREE_P#IO_STATUS

FIELDS

FROM_FILES

IO_ERROR

IO_STATUS

USINGSELECT_SQL_FREE_P#USING


Anchor
FIELDS
FIELDS
FIELDS

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
title注意

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

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

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

...

Anchor
FROM_FILES
FROM_FILES
FROM_FILES

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"')

Anchor
IO_STATUS
IO_STATUS
IO_STATUS

...

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

値については、I/O コマンド戻りコード表を参照してください。

Anchor
IO_ERROR
IO_ERROR
IO_ERROR

...