Page History
7.109 SELECT_SQL
| Note | ||
|---|---|---|
| ||
ネイティブIBM i データベース・アクセスを使用する標準のSELECTコマンドとは異なり、SELECT_SQLコマンドは、SQL/400製品を使用してデータベース・アクセスを実行します。
SELECT_SQLコマンドには2つの形式があります。1つは、このセクションで説明する十分に構造化された形式です。この形式では、SQLを正しく構成し、プラットフォームによって異なるオブジェクト名に対応することができますが、SELECTステートメントのタイプは非常に単純なものに制限されます。もう1つは、自由形式のSELECT_SQLです。この形式では、データベース・エンジンが有効な構文として受け入れる任意のSELECTステートメントを入力できますが、LANSAでは、複数のプラットフォームに渡るオブジェクト名の互換性維持について考慮されません。これらの2つの違いにより、SQLが複数のデータベースに渡って予想どおりに実行されない可能性が高くなります。詳細については、「7.110 自由形式のSELECT_SQL」を参照してください。
SELECT_SQLコマンドは、ENDSELECTコマンドと対で使用し、1つ以上のテーブル (ファイル) の、1行以上の行 (レコード) を処理するための「ループ」を作成します。
...
PRC1064 | ** WARNING: Name is not a defined field. Correct it for portability. フィールド名としていずれかのファイルの実列を使用できるため、選択は機能しますが、LANSAでサポートされるすべてのデータベースで機能するためには、フィールド名(ハッシュ記号なし)を使用する必要があります。 |
|---|---|
PRC1065 | ** WARNING: Field <afield> is not a physical field in any of the files in the FROM_FILES parameter. LANSAは、FROM_FILESパラメータで指定されたいずれかのファイルにおいて、SQLで指定された名前がLANSAで認識されているかどうかを検査します。その名前がLANSA名であるか、変換された名前であるか、または列名の変更であるかを検査する他、予約済みのSQLキーワードであるかどうかも検査します。どれにも該当しない場合、この警告が表示されます。 この警告の原因として、フィールド名の代わりに列名が使用されていることが考えられます。この場合、SQLはVisual LANSAで動作します。または、フィールドが正しくない可能性があり、この場合は実行時に失敗します。 |
PRC1067 | ** Fields A$ and A_ both resolve to A_ so A_ in SELECT_SQL will be set with Non-IBM i text A_ 同じ名前に解決されるフィールドが複数ある場合、生成されたコードで各フィールドを識別できなくなり、コンパイル・エラーが発生します。SELECT_SQLでは、下位互換性を保つために固定リテラル値が使用されるため、コンパイルは成功します。ただし、これはIBM i で実行されない場合があります。1つのファンクション内でこのように一致するフィールドを使用しないようコードを変更してください。 例えば、列名がA_で固定されている場合、IBM iでは実行されません。代わりにA$を使用してください。 |
移植性に関する考慮事項 | 複数のプラットフォームを使用する場合、各プラットフォームで使用されるフィールド長を考慮してください。WHERE パラメータを参照してください。 Visual LANSAからIBM i 上のデータベースに接続するためにこのコマンドを使用しないでください。この目的でSELECT_SQLコマンドを使用しても、IBM i 上のデータベースではなく、PC上へのデータベースにアクセスします。このタイプの接続を行うには、リモート・プロシージャ・コール(すなわち、call_server_function)を使用する必要があります。 |
次のトピックも参照してください。
| Panel | ||
|---|---|---|
| ||
必須 SELECT_SQL ---- FIELDS --------- フィールド名 ----- *SAME ---------------> >-- FROM_FILES ------- フィールド名 ---- 相関----------------> ------------------------------------------------------------------------------------ 任意指定 >-- WHERE --------- 'SQL where 条件' ------------------------> >-- GROUP_BY ----- 'SQL group by 句' -----------------------> >-- HAVING ------- 'SQL having 条件' ------------------------> >-- ORDER_BY ----- 'SQL order by パラメータ' ---------------> >-- DISTINCT ------ *NO --------------------------------------> >-- IO_STATUS ----- フィールド名 ---------------------------> >-- IO_ERROR ----- *ABORT ----------------------------------| |