Change your last part of the script to the following and see what happens:
Code:
for rec in c2 loop
  delete from stats$database_instance where snap_id=rec.snap_id;
end loop;
commit;
if SQL%NOTFOUND then
  dbms_output.put_line('No hanging SQL to delete');
elsif NOT SQL%NOTFOUND then 
  dbms_output.put_line('Hanging SQL deleted');
else
  dbms_output.put_line('Hey, what exactly do you want me to show???');
end if;
The cursor atribute SQL%NOTFOUND has nothing to do with your cursor C2!!! When you call the atribute SQL%NOTFOUND your cursor C2 doesn't exist any more, it is closed allready!