В вашем описании указано, что вы ищете диапазон значений дат. А именно с января по месяц параметра, указанный в параметре. В таком случае оператор Case не даст вам того, что вы хотите, поскольку он может вернуть только одно значение. Поскольку вы ищете диапазон дат, преобразуйте столбец названия периода и параметр в даты. См. Скрипку .
with parameter as
( select to_date('&MonYr','Mon-rr') ep from dual )
, period ( start_period, end_period) as
( select trunc(ep,'year'), ep from parameter )
select period_name
from gl
join period
on to_date(period_name,'Mon-rr') between start_period and end_period;
Я бы сделал go на шаг дальше, чем @Gordon, и просто сохранил бы это как DATE. Если вам действительно нужен часто используемый формат Mon_rr, добавьте его в виртуальный столбец. Итак:
create table gl (
period_date date
, period_name varchar2(16)
generated always as (to_char(period_date, 'Mon-rr')) virtual );