次の例に示すように、ホスト配列をUPDATE文内の入力変数として使用できます。
int emp_number[50]; float salary[50]; /* populate the host arrays */ EXEC SQL UPDATE emp SET sal = :salary WHERE EMPNO = :emp_number;
更新された行の累積数はsqlerrd[2]
に保存されます。この数には更新カスケードによって処理された行は含まれていません。
配列内に不適切な要素がある場合は、埋込みSQLのFOR句を使用して更新対象の行数を制御できます。
前の例では一意キー(EMP_NUMBER)を使用した一般的な更新を示しています。各配列要素で更新できる行は1行のみです。次の例では、各配列要素で複数の行を操作できます。
char job_title [10][20]; float commission[10]; ... EXEC SQL UPDATE emp SET comm = :commission WHERE job = :job_title;
UPDATE文のSET句またはWHERE句では、単純ホスト変数とホスト配列の併用はお薦めしません。ホスト変数のうち1つでも配列があれば、すべてのホスト変数を配列にする必要があります。 さらに、SET句でホスト配列を使用するときには、WHERE句の要素数と同じ数のものを使用してください。
UPDATE文のCURRENT OF句では、ホスト配列は使用できません。
関連項目:
代替方法については、CURRENT OFの擬似実行についてを参照してください。
表8-2は、UPDATE文で有効なホスト配列の使用方法を示しています。
表8-2 UPDATE文で有効なホスト配列
SET句 | WHERE句 | 有効/無効 |
---|---|---|
array |
array |
有効 |
scalar |
scalar |
有効 |
array |
scalar |
無効 |
scalar |
array |
無効 |