Сам курсор фактически не работает.Это ваш код, который использует курсор.Таким образом, вы можете проверить в коде, если это первый день месяца:
-- Check if today is first day of the month
if trunc(sysdate, 'MM') = trunc(sysdate) then
-- Use cursor here
end if;
Возможно, лучшим решением будет создание двух отдельных процедур и создание заданий для каждой из них.Вы можете указать интервалы для задания, чтобы одно запускалось ежедневно, а другое - ежемесячно.