SELECT INTO

結果の 1 行を検索し、指定した SELECT リストの項目の値を INTO リストで指定したホスト変数に割り当てます。

構文:

>>---EXEC SQL--.-------------------.---.------------.---->
               +-FOR :host_integer-+   +-AT db_name-+

                                        +- ,-+
                                        V    | 
 >----SELECT----.-------------.---INTO--:hvar------------->
                +-select_list-+

 >----select_options----END-EXEC---><
 

パラメーター:

host_integer 処理されるホスト配列要素の最大数を指定するホスト変数。PIC S9(4) COMP-5 または PIC S9(9) COMP-5 として宣言する必要があります。
db_name DECLARE DATABASE を使用して宣言されているデータベースの名前。
select_list データを検索するテーブル部分。
:hvar select_list 項目を受け取る 1 つ以上のホスト変数。
select_options SQL SELECT 文で使用できる 1 つ以上の文またはその他のオプション (FROM 句または WHERE 句など)。

説明:

単選択文、SELECT には、FROM を含める必要があります。

受け取るホスト変数の数よりも多くの列を選択した場合、sqlwarn3 の値が「W」に設定されます。ホスト変数のデータ型と長さは、 それに割り当てられた値と互換性がなければなりません。データが切り捨てられた場合、sqlwarn1 の値は「W」に設定されます。

SELECT INTO 文がデータベースから複数の行を返す場合、最初の行以外のすべての行が廃棄され、sqlwarn4 が「W」に設定されます。最初の行以降の行も返す場合には、カーソルを使用します。あるいは、INTO 句で配列項目を指定します。配列は、配列の最大数、 host_integer の値、返される行数のうちの最小の値まで書き込むことができます。

SELECT INTO がアプリケーション内の文の許容範囲を超える行をデータベースから返した場合、OpenESQL は指定された各指令に対して次の結果を返します。
CHECKSINGLETON     SQLCODE = -811 SQLSTATE = 21000 SQLWARN4 = W 
NOCHECKSINGLETON   SQLCODE = 0    SQLSTATE = 00000 SQLWARN4 = space 
DIALECT=MAINFRAME  SQLCODE = -811 SQLSTATE = 21000 SQLWARN4 = W  
ANSI92ENTRY        SQLCODE = -1   SQLSTATE = 21000 SQLWARN4 = W 
SELECT INTO がアプリケーション内の文の許容範囲を超える行をデータベースから返し、これらの指示のいずれも設定されていない場合、OpenESQL は次の結果を返します。
SQLCODE = +1 SQLSTATE = 21000 SQLWARN4 = W 
注:INTO 句のホスト変数のいずれかが配列である場合、ホスト変数はすべて配列でなければなりません。

例:

  ...
     MOVE 99 TO staff-id
     EXEC SQL
        SELECT last_name
           INTO :lname
           FROM staff
           WHERE staff_id=:staff-id
     END-EXEC
     EXEC SQL
        SELECT staff_id
           INTO :staff-id
           FROM staff
           WHERE first_name = 'Phil'
     END-EXEC