with t (v_str, i,j)
as
(
select '@' v_str, 1 i,1 j from dual
union all
select cast (
case when mod(t.i,2) = 0 then
t.v_str||'#'
else
t.v_str||'$'
end
as varchar2(1000)) v_str,
case when t.j=3 then
t.i+1
else
t.i
end i,
case when t.j=3 then
1
else
t.j+1
end j
from t
where t.i<=3
)
CYCLE i,j SET CYCLE_FLAG TO 'Y' DEFAULT 'N'
select * from t where t.i<=3
--效果同:
--for i in 1..3 loop
-- for j in 1..3 loop
-- putline...;
-- end loop;
--end loop;