Почему просто использовать простой SQL-запрос для этого, как это:
select xxx from table_names where created_date is null or (created_date >= to_date("02/09/2010", "dd/mm/yyyy") and created_date <= to_date("03/09/2010", "dd/mm/yyyy"));
Редактировать
Вы можете определить запрос, как один определенной ammoQ, то есть что-то подобное :
select xxx from table_names where created_date is null or created_date >= start_date and created_date <= nvl(end_date, to_date("31/12/9999", "dd/mm/yyyy"));
Однако, поскольку вы используете PL/SQL, вы можете проверить недействительность o е end_date
параметр:
IF end_date IS NULL THEN
select xxx from table_names where created_date is null or created_date >= start_date;
ELSIF
select xxx from table_names where created_date is null or created_date >= start_date and created_date <= end_date;
END IF;
Обратите внимание, что вы можете удалить условие created_date is null
если created_date
не обнуляемый колонок ...
Я думаю, что ты хотел сказать "... где created_date больше датой_начала". Вы не можете значимо сравнить created_date с end_date, если end_date имеет значение NULL. –