Передайте дату ('01-май-2003 ') и используйте функции даты, чтобы она заработала:
create or replace
function myfun(mymonth date)
return date
is
cursor cur
is
select *
from products
where purchase_date >= TRUNC(mymonth, 'MM')
and purchase_date < ADD_MONTHS( TRUNC(mymonth,'MM') , 1 );
Использование TRUNC(x, 'MM')
во входном месяце означает, что вы можете передать любую дату, так как запрос будет выполняться с первого дня месяца.
В качестве альтернативы, вы можете использовать функцию LAST_DAY()
, которая возвращает начало последнего дня месяца ввода. Вам нужно следить за значениями времени, поскольку тип данных Oracle DATE может содержать как дату, так и время.