Ваша функция, getWorkingDays
, работает только для одной отдельной даты.
Если вы хотите, чтобы она работала для диапазона дат, вам необходимо вызывать ее один раз для каждого дня в диапазоне дат.
Использование примера из вашего вопроса sysdate - 45
означает, что вам нужно назвать его 45 раз, как в
select getWorkingDays(sysdate - 45, 1) from dual
union
select getWorkingDays(sysdate - 44, 1) from dual
union
select getWorkingDays(sysdate - 43, 1) from dual
Надеюсь, вы поняли идею. Я заменил значение 1 (один) для вашей переменной slider
. Вы должны определить его как переменную. Вы утверждаете, что используете SQL Developer , поэтому я предлагаю вам обратиться к документации по этому продукту, чтобы узнать, как определять переменные.
В качестве альтернативы, вы можете написать запрос SQL, который возвращает точно 45 строк (опять же 45, потому что это пример, который вы использовали в своем вопросе). Я полагаю, что следующий вопрос SO показывает, как этого добиться:
SQL Запрос на возврат N строк из дуальных
Адаптируя ответ и на этот вопрос SO, а также как пример из вашего вопроса, я считаю, что должно сработать что-то вроде следующего.
SELECT getWorkingDays(sysdate - (45 - LEVEL), 1)
FROM DUAL
CONNECT BY LEVEL <= 45
Конечно, я не могу это проверить, поскольку у меня нет кода для функции getWorkingdays()
.