как бы Том Кайт рекомендует юзать функции/столбцы возвращающие char 'Y'|'N'
но зачем тогда там boolean?
пишу
create or replace function f_IS_NOW_WORK(p_DT_FROM date, p_DT_TO date) return boolean is
RES boolean;
begin
RES := (p_DT_FROM < sysdate and (p_DT_TO > sysdate or p_DT_TO is null));
return RES;
end;
работает
begin
if f_is_now_work(sysdate + 10, sysdate + 10) then
dbms_output.put_line('sysdate + 10, sysdate + 10');
end if;
if f_is_now_work(sysdate - 10, sysdate + 1) then
dbms_output.put_line('sysdate - 10, sysdate + 1');
end if;
if f_is_now_work(sysdate - 10, sysdate -1) then
dbms_output.put_line('sysdate - 10, sysdate - 1');
end if;
end;
sysdate - 10, sysdate + 1
почему же не работает
select
*
from
main.t_services S
join main.t_svc_ref SR on S.SVC_ID = SR.SVC_ID
where
SR.COD = '5500'
and f_is_now_work(s.date_begin, s.date_end) -- ORA-00920: неверен реляционный оператор
;
как написать, что бы работало - знаю. Почему не работает так, как написано? Что мешает?