so all of the rows in the table start off with columna is null?

I may be looking at too simple a case, but why not ...

cursor cur
select * from tablea
where columna is null
and colummnb > 1
for update of columna

begin
for records in cur loop
....
err=1;
etc.
update tablea set columna=err
where current of cur;
end;