DELETE文でもホスト配列を入力変数として使用できます。これは、WHERE句内のホスト配列の連続した要素を使用して、DELETE文を繰り返し実行するのと同様です。つまり1回の実行で表から0行、1行または複数行が削除されます。
ホスト配列による削除の例は次のとおりです。
... int emp_number[50]; /* populate the host array */ ... EXEC SQL DELETE FROM emp WHERE empno = :emp_number;
削除された行の累積数はsqlerrd[2]
に保存されます。この数には削除カスケードによって処理された行は含まれていません。
この例では一意キー(EMP_NUMBER)を使用した一般的な削除を示しています。各配列要素で削除できる行は1行のみです。次の例では、各配列要素で複数の行を操作できます。
... char job_title[10][20]; /* populate the host array */ ... EXEC SQL DELETE FROM emp WHERE job = :job_title; ...
DELETE文のWHERE句では、単純ホスト変数とホスト配列を併用できません。ホスト変数のうち1つでも配列があれば、すべてのホスト変数を配列にする必要があります。
DELETE文のCURRENT OF句ではホスト配列は使用できません。
関連項目:
代替方法については、CURRENT OFの擬似実行についてを参照してください。