In-Binding

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 */;