Versions Compared

Key

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

[ Image Removed |../../index.htm#lansa/select.htm]
現在地:

...

7.107 SELECT

Note

...

注意:利用オプション

SELECTコマンドは、ENDSELECTコマンドと対で使用して、ファイル内で特定の条件に一致した1つ以上のレコードを処理するための「ループ」を作成するために使用します。 SELECTコマンドは、ENDSELECTコマンドと対で使用して、ファイル内で特定の条件に一致した1つ以上のレコードを処理するための「ループ」を作成するために使用します。 

SELECT/ENDSELECTループの例を以下に示します。
 ENDSELECTループの例を以下に示します。 

   ---

...

>SELECT  FIELDS(#ORDLIN #PRODUCT #QUANTITY)
|       FROM_FILE(ORDLIN)

...

 WITH_KEY(#ORDER)

...


|  
|    DISPLAY FIELDS(#ORDER #ORDLIN #PRODUCT #QUANTITY)
|  
----ENDSELECT

...

これにより、ファイルORDLINから、受注番号がフィールド#ORDERの値に一致しているすべてのレコードを読み取るループが作成されます。 これにより、ファイルORDLINから、受注番号がフィールド#ORDERの値に一致しているすべてのレコードを読み取るループが作成されます。 

レコードが読み取られるたびに、SELECT/ENDSELECTループ内に定義されたDISPLAYコマンドによって、そのレコードの明細が表示されます。 ENDSELECTループ内に定義されたDISPLAYコマンドによって、そのレコードの明細が表示されます。 

SELECTコマンドは、LANSA RDMLで最も柔軟なコマンドでしょう。このコマンドを最大限に活用するには、ある程度の経験が必要です。このコマンドでサポートされるデータベース処理のタイプの例を以下に示します。

...

IBM i オペレーティング・システム・コマンドOPNQRYFの使用方法の詳細については、まずこのガイドに記載されているOPENコマンドのセクションを参照してください。 回避すべきSELECTループ・ロジック

回避すべきSELECTループ・ロジック 

...

以下のように、SELECTループでフィールドA、B、およびCが選択される場合について考えます。 

   SELECT FIELDS(#A #B #C)
FROM_FILE(...)

...

        
WHERE(...............)

...


.......

...


.......

...


ENDSELECT

...

このループ内では、これらのフィールド値は予測可能で、すべてのプラットフォームに渡って一定です。 このループ内では、これらのフィールド値は予測可能で、すべてのプラットフォームに渡って一定です。  ただし、ループ外では、フィールド値は予測不可能で一定になりません。そこで、以下のように指定します。
SELECT FIELDS(#A #B #C) FROM

ただし、ループ外では、フィールド値は予測不可能で一定になりません。そこで、以下のように指定します。 

   SELECT FIELDS(#A #B #C) FROM_FILE(...)

...


.......

...


IF COND(#A < 35.5)

...


.......

...


ENDIF
.......

...


ENDSELECT

...

...

上記の例は、予測可能なロジックです。一方、以下のように指定したとします。 

   SELECT FIELDS(#A #B #C)
FROM_FILE(...)

...

        
WHERE(...............)

...


.......

...


.......

...


ENDSELECT
IF COND(#A < 35.5)

...


.......

...


ENDIF

...

このロジックは、その形式やバリエーションに関係なく予測不可能です。 このロジックは、その形式やバリエーションに関係なく予測不可能です。 

A (BおよびC)の値は、選択テーブルから読み取られたデータであるという観点から、実際にはSELECTループの終了後に「未定義」として定義されます。すなわち、SELECT/ENDSELECTループ終了時におけるこれらのフィールド値は予測不可能で、プラットフォームに渡って一定ではありません。

移植性に関する考慮事項

パラメータ FROM_FILEGENERICLOCK、および OPTIONS を参照してください。

...

次のトピックも参照してください。

7.107.1 SELECT のパラメータ

7.107.2 SELECT についてのコメント/警告

7.107.3 SELECT の使用例


Panel
bgColor

...

#ffffcc

                                                                                                必須

  SELECT ---------- FIELDS --------

...

-- フィールド名    フィールド属性 ---

...

-->

...

                                                         |                        |                         |      |
                                                         |                         ----- 最大7 -----      |
                                                         |*ALL                                                  |
                                                         |*ALL_REAL                                        |
                                                         |*ALL_VIRT                                         |
                                                         |*INCLUDING                                    |
                                                         |*EXCLUDING                                    | 
                                                         |拡張可能なグループ                        |
                                                         |                                                         |
                                                         |------

...

RDMLXの場合は最大1000 ----|

...

                                                          ------ RDMLの場合は最大100 --

...

----

...

                     >-- FROM_FILE -------- ファイル名  . *FIRST ------------------>

...

                                                                                 ライブラリ名

 -----------------------------------------------------------------------------------

...

                                                                                                任意指定

                     >-- WHERE -----------

...

'条件'

...

----------------------------------->

 

...

                   >-- WITH_KEY --------- キー・フィールド値 ---

...

-------------->

...

                                                           拡張可能なグループ式

                     >-- NBR_KEYS -------- *WITHKEY ----------------------------->

...

                                                          *COMPUTE
                                                          数値フィールド名

                    >-- GENERIC ----------

...

*NO ------------------------------------>

...

                                                         *YES

...

                    >-- IO_STATUS -------- *STATUS ------------------------------->

...

                                                         フィールド名

                    >-- IO_ERROR --------- *ABORT ------------------------------->

...

                                                          *NEXT
                                                          *RETURN 
                                                          ラベル

                   >-- VAL_ERROR ------- *LASTDIS ------------------------------>

...

                                                        *NEXT
                                                        *RETURN
                                                        ラベル

                   >-- END_FILE --------- *NEXT --------------------------------->

...

                                                       *RETURN
                                                       ラベル

                   >-- ISSUE_MSG ------ *NO ------------------------------------>

...

                                                      *YES

...

                   >-- LOCK ------------

...

*NO ------------------------------------>

...

                                                      *YES

...

                   >-- RETURN_RRN --- *NONE --------------------------------->

...

                                                     フィールド名

                   >-- OPTIONS ------- 最大5個のオプションを指定可能 --------|
 

...

                                                  *BACKWARDS
                                                    *STARTKEY
                                                    *ENDWHERE
                                                    *ENDWHERESQL
                                                   *BLOCKnnn