У меня есть одна таблица, в которой содержится запись для каждого клиента (основная таблица). Затем у меня есть таблица с дополнительной информацией для некоторых клиентов. В таблице дополнительных сведений иногда нет записей для записи в основной таблице. Иногда в таблице подробностей имеется несколько записей для записи в основной таблице, и в этом случае мне нужна самая последняя запись (отсюда максимальный подвыбор).
Беда в том, что моя функция возвращает значения только для нескольких записей в таблице подробностей. Если я закомментирую часть функции, которая просматривает подробную таблицу, и просто верну значение STAT3
, то оно, похоже, будет работать. Как сделать так, чтобы второй выбранный ниже статут применялся, только если есть результат для этого запроса?
create or replace FUNCTION "F_RETURN_STAT" (
N_UNIQUE IN NUMBER)
RETURN VARCHAR2
IS
V_STAT3 varchar2(20);
V_STAT varchar2(20);
V_STAT2 varchar2(20);
D_ACTDATE date;
D_STARTDATE date;
BEGIN
select expire into D_ACTDATE
from main_table a
where a.uniquefield = N_UNIQUE;
IF
D_ACTDATE > SYSDATE
or
D_ACTDATE is null
then
V_STAT :='TRUE';
else
v_STAT :='FALSE';
end if;
select b.startdate into D_STARTDATE
from main_table a, detail_table b
where a.uniquefield= b.main_table_id(+) and
b.main_table_id = N_UNIQUE and
b.uniquefield in
(select max(c.uniquefield) from detail_table c group by main_table_id);
if
D_STARTDATE is not null
then
V_STAT2 :='FALSE';
end if;
if
V_STAT2 ='FALSE'
then
V_STAT3 :='FALSE';
ELSE
V_STAT3 := V_STAT;
end if ;
RETURN(V_STAT3);
end;