結果の中から 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 句など)。 |
例:
...
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
説明:
シングルトン SELECT には FROM 句を含める必要があります。
受け取り側のホスト変数の数よりも多くの列を選択した場合、sqlwarn3 の値が「W」に設定されます。ホスト変数のデータ型および長さは、そのホスト変数に割り当てられる値との互換性がなければなりません。データが切り捨てられた場合、sqlwarn1 の値は「W」に設定されます。
SELECT INTO 文によってデータベースから複数の行が返される場合、最初の行以外のすべての行が廃棄され、sqlwarn4 が「W」に設定されます。最初の行以降の行も返す場合には、カーソルを使用します。あるいは、INTO 句で配列項目を指定します。配列には、配列の最大サイズ、host_integer の値、または返される行の数のうち、もっとも小さい値を取り込むことができます。
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 は次の結果を返します。