Если вы выполняете свои операторы в SQL * Plus (или я думаю, что SQL Developer не уверен в других), вы можете использовать переменную связывания:
variable l_max_date date;
exec max_date_proc(:l_max_date);
select * from benefits where claim >= :l_max_date;
То же самое с функцией, которая болееподходит здесь;используя Джастина:
variable l_max_date date;
exec :l_max_date := get_max_start_date();
select * from benefits where claim >= :l_max_date;
Конечно, нет особого смысла делать эту функцию или процедуру, если вы используете результат только один раз, но я предполагаю, что вы хотите использовать одно и то же значение несколько рази не пересчитывать его каждый раз.
Еще один вариант, использующий SQL * Plus ' для обработки столбцов для определения переменной:
column max_date new_value l_max_date noprint;
select max(start_date) max_date from employee;
select * from benefits where claim >= &l_max_date;