ほとんどのケースが、単純にいけるはずなのでこの実装のほうが良い気がする。
コードを見るとわかるが、カーソルのオープンやクローズ、ループの終了条件がないのがわかる。
begin
for rec in (select col1 from test) -- for文のin句にカーソルを指定する。ここで指定するカーソルは、事前に(declare)で定義したカーソルを指定することができる。
loop
dbms_output.put_line(rec.col1);
end loop;
end;