The same
progression (explicit row by row processing, bulk binding, bulk binding in
native dynamic SQL) is supported for DML (insert, update and delete)
thus…
declare
type employee_ids_t is table of employees.employee_id%type
index by binary_integer;
employee_ids employee_ids_t;
begin
employee_ids(1) := 151;
employee_ids(2) := 162;
employee_ids(3) := 173;
for j in employee_ids.first..employee_ids.last
loop
update employees set salary = salary*1.1
where employee_id = employee_ids(j);
end loop;
end;
…then…forall j in employee_ids.first..employee_ids.last
update employees set salary = salary*1.1
where employee_id = employee_ids(j);
…then…forall j in employee_ids.first..employee_ids.last
execute immediate 'update employees set salary = salary*1.1'
|| ' where employee_id = :the_id'
using employee_ids(j) /* new at 9i */;