Een oplossing die ik hiervoor gebruik, is om het datumbereik om te zetten in een geheel getal dat je in een for-lus kunt gebruiken, en vervolgens terug te converteren naar een datum om er dingen mee te doen. Je kunt op deze manier geen joins of iets dergelijks doen, maar het is een veel kleinere oplossing dan degenen die al hebben gepost:
declare
start_date number;
end_date number;
business_date varchar2(8);
begin
start_date := to_number(to_char(to_date('2013-04-25', 'yyyy-MM-dd'), 'j'));
end_date := to_number(to_char(to_date('2013-05-31', 'yyyy-MM-dd'), 'j'));
for cur_r in start_date..end_date loop
business_date := to_char(to_date(cur_r, 'j'), 'yyyy-MM-dd');
dbms_output.put_line(business_date);
end loop;
end;