Plan 1)

declare
.
.
for i in ( SELECT /*+FULL(T) */ COL2 From TABLE1 Where COL1='SSSS') loop

Update TABLE2 ...Where COL1 = I.COL2;
.
.
end loop;
end;

Plan 2)
declare
.
.
for i in ( SELECT /*+FULL(T) */ CO1,COL2 From TABLE1 ) loop
If I.COL1='SSSS' Then
Update TABLE2 ...Where COL1 = I.COL2;
.
.
End If;
end loop;
end;

If aprx 30% of data is being referenced from table TABLE1 ( a VVLarge table over 800Million Records) , then which one would be a better approach ?

What are PROS and CONS in between the above plans ?

Thanks
Jr.