プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

配列での更新について

次の例に示すように、ホスト配列を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

無効