Instead of a loop (row-by-row processing), it's better to do this in a single statement.
You can do this by using a row generator. This creates rows for the number of values you want to "loop". e.g. to have four increments of .25, you could do the following:
select rownum/4 inc from dual
connect by level <= 4;
INC
----------
.25
.5
.75
1
To insert this, just cross join with your table, adding inc to the day:
insert into TEST_TIME (time)
with rws as (
select rownum/4 inc from dual
connect by level <= 10 -- this is how many values you want to "loop"
)
select to_char(d_day+inc,'DDHH24MI"Z"MONRR') days
from rws, tab_days;
If you want to know more about row generators, check out:
https://www.youtube.com/watch?v=UonikfFgEyM