Page History
[ |../../index.htm#lansa/select_sql.htm]
現在地:
| Anchor | ||||
|---|---|---|---|---|
|
| Anchor | ||
|---|---|---|
|
...
|
...
|
&<a href="rdml_database.htm"&>注: 利用オプション&</a&> &<a href="SELECT_SQL_Wizard.htm"&>SELECT注: 利用オプション SELECT_SQL ステートメント ウィザード&</a&> を参照
ネイティブIBM i データベース・アクセスを使用する標準のSELECTコマンドとは異なり、SELECT_SQLコマンドは、SQL/400製品を使用してデータベース・アクセスを実行します。
SELECT_SQLコマンドには2つの形式があります。1つは、このセクションで説明する十分に構造化された形式です。この形式では、SQLを正しく構成し、プラットフォームによって異なるオブジェクト名に対応することができますが、SELECTステートメントのタイプは非常に単純なものに制限されます。もう1つは、自由形式のSELECT_SQLです。この形式では、データベース・エンジンが有効な構文として受け入れる任意のSELECTステートメントを入力できますが、LANSAでは、複数のプラットフォームに渡るオブジェクト名の互換性維持について考慮されません。これらの2つの違いにより、SQLが複数のデータベースに渡って予想どおりに実行されない可能性が高くなります。詳細については、「7SQLです。この形式では、データベース・エンジンが有効な構文として受け入れる任意のSELECTステートメントを入力できますが、LANSAでは、複数のプラットフォームに渡るオブジェクト名の互換性維持について考慮されません。これらの2つの違いにより、SQLが複数のデータベースに渡って予想どおりに実行されない可能性が高くなります。詳細については、「7.110 自由形式のSELECT_SQL」を参照してください。 SQL」を参照してください。
SELECT_SQLコマンドは、ENDSELECTコマンドと対で使用し、1つ以上のテーブル (ファイル) の、1行以上の行 (レコード) を処理するための「ループ」を作成します。
例として、以下のSELECT_SQL / ENDSELECT ループはテーブルORDLINの製品および数量の値がすべて選択され、リストに1つずつセットされます:
---> DEF_LIST NAME(#ALIST) FIELDS(#PRODUCT #QUANTITY) -> SELECT_SQL FIELDS(#PRODUCT #QUANTITY) | USING('SELECT "PRODUCT", "QUANTITY" FROM "MYDTALIB"."ORDLIN"') | | ADD_ENTRY(#ALIST) | -- ENDSELECT
SELECT_SQLの実装方法は、IBM i 上でRPGとして生成されたオブジェクトと、Cとして生成されたオブジェクトとでは異なります。RPGは、SELECT_SQLを静的な埋め込みSQLに実装します。一方、Cは、SELECT_SQLを呼び出しレベル・インターフェース(CLI)に実装するため、動的になります。この違いの効果については、以降、関連する箇所で説明していきます。
SELECT_SQLを使用する前に、以下の点を認識しておいてください。
1. SELECT_SQLコマンドを含むファンクションをコンパイルするには、ライセンス交付された以下の製品が必要です。
...
PRC1064 |
|
PRC1065 |
|
PRC1067 |
|
移植性に関する考慮事項 | 複数のプラットフォームを使用する場合、各プラットフォームで使用されるフィールド長を考慮してください。WHERE 複数のプラットフォームを使用する場合、各プラットフォームで使用されるフィールド長を考慮してください。WHERE パラメータを参照してください。 |
参照
7.109.1 SELECT_SQL のパラメータ
7.109.2 SELECT_SQL の列名と列値
7.109.3 SELECT_SQL の使用例
7.109.4 SELECT_SQL の参考文献
7.109.5 SELECT-SQL の強制変換
必須
SELECT_SQL -- FIELDS ----- フィールド名 - *SAME ---------->
| SQLフィールド・ソース |
----- 最大1000 -------------
>- FROM_FILES ----- フィールド名 相関 -->
| |
------------ 最大20 -----------
-----------------------------------------------------------------
任意指定
>- WHERE ------ 'SQL where条件' --------->
>- GROUP_BY --- 'SQL group by句' --------->
>- HAVING ----- 'SQL having条件' -------->
>- ORDER_BY --- 'SQL order byパラメータ' ------>
>- DISTINCT --- *NO --------------------------->
*YES
>- IO_STATUS -- フィールド名 -------------------->
*STATUS
>- IO_ERROR --- *ABORT ------------------------|
*NEXT
*RETURN
ラベル
[ |../../index.htm#lansa/select_sql.htm]