PL/SQL for Updating 1 Column in Table A Where PK = a row in table B
Most efficient way to do the update is most likely not with PL/SQL, but with single SQL statement, for example:

update ord
set order_type=&lt;new value&gt;
where order_key in (
  select order_key
  from gr_ord
);


or with merge:

merge into ord
using gr_ord
on (ord.order_key = gr_ord.order_key)
when matched then
  update set order_type=&lt;new value&gt;;


You should be able to do ~3M update in a single transaction. I have run updates against table with 100+ columns at rate of 1M updates in 15 seconds (single thread in average server).