配列とは、1 つの変数名に関連付けられた複数のデータ項目の集まりです。複数のホスト変数を配列 (ホスト配列) として定義すると、これらの変数を単一の SQL 文で処理できます。
ホスト配列は、INSERT 文、UPDATE 文、および DELETE 文の入力変数として使用したり、SELECT 文や FETCH 文の INTO 句で出力変数として使用したりできます。配列を SELECT 文、FETCH 文、DELETE 文、INSERT 文、および UPDATE 文で使用して、大量のデータを扱うことができます。
通常のホスト変数と同様に、ホスト配列はプログラムで宣言してから SQL 文でそれらを参照する必要があります。
ホスト配列は、通常のホスト変数とほぼ同様に BEGIN DECLARE SECTION と END DECLARE SECTION を使用して宣言します。ただし、配列の次元を OCCURS 句で指定する必要があります。
次の例は、典型的なホスト配列の宣言と参照を示しています。
EXEC SQL BEGIN DECLARE SECTION END-EXEC 01 AUTH-REC-TABLES 05 Auth-id OCCURS 25 TIMES PIC X(12). 05 Auth-Lname OCCURS 25 TIMES PIC X(40). EXEC SQL END DECLARE SECTION END-EXEC. . . . EXEC SQL CONNECT USERID 'user' IDENTIFIED BY 'pwd' USING 'db_alias' END-EXEC EXEC SQL SELECT au-id, au-lname INTO :Auth-id, :Auth-Lname FROM authors END-EXEC display sqlerrd(3)
次の例は FOR 句を使用して、UPDATE 文によって変更された 10 行 (:maxitems の値) を示しています。
EXEC SQL BEGIN DECLARE SECTION END-EXEC 01 AUTH-REC-TABLES 05 Auth-id OCCURS 25 TIMES PIC X(12). 05 Auth-Lname OCCURS 25 TIMES PIC X(40). 01 maxitems PIC S9(4) COMP-5 VALUE 10. EXEC SQL END DECLARE SECTION END-EXEC. . . . EXEC SQL CONNECT USERID 'user' IDENTIFIED BY 'pwd' USING 'db_alias' END-EXEC EXEC SQL FOR :maxitems UPDATE authors SET au_lname = :Auth_Lname WHERE au_id = :Auth_id END-EXEC display sqlerrd(3)