Запутанная ситуация, так что со мной голая ...
У меня есть вид.представление имеет функцию, которая возвращает текстовую строку «ИСТИНА» или «ЛОЖЬ» на основе двух критериев
функция просматривает две таблицы.
Условие 1: таблица клиента содержитполе даты - если системной датой является> поле даты, оно должно возвращать false
Условие 2: таблица customer ссылается на таблицу customer_detail.иногда в таблице сведений есть запись, а иногда нет (поэтому я добавил в запрос синтаксис внешнего соединения, который на самом деле ничего не делает, потому что дополнительные критерии вынуждают внутреннее объединение, как я полагаю).В таблице customer_detail может быть несколько записей для каждой записи в таблице customer.если в таблице подробностей несколько записей, мне нужно взглянуть на самую последнюю запись max (уникальное поле).эта таблица имеет поле даты.если это поле не равно нулю, функция должна вернуть ложные значения первого условия.
Вот что у меня есть.Когда я компилирую, я получаю две ошибки:
Статут SQL игнорируется - в первой строке первого выбранного статута
и
Ошибка(17,45): PL / SQL: ORA-00942: таблица или представление не существует - на подвыборе первого выбора
create or replace FUNCTION "F_STATUS" (
N_UNIQUE IN NUMBER)
RETURN VARCHAR2
IS
V_TORF varchar2(20);
D_ACTDATE date;
D_STARTDATE date;
BEGIN
select b.startdate into D_STARTDATE
from customerdb.customer a, customerdb.customer_detail b
where a.uniquefield= b.uniquefield(+) and
b.uniquefield = N_UNIQUE and
b.uniquefield in
(select max(c.uniquefield) from customerdb.customer_detail c group by uniquefield);
if
D_STARTDATE is not null
then
V_TORF :='FALSE';
RETURN(V_TORF);
else
select expiredate into D_ACTDATE
from customerdb.customer
where customerdb.customer.uniquefield = N_UNIQUE;
IF
D_ACTDATE > SYSDATE
then
V_TORF :='TRUE';
RETURN(V_TORF);
else
v_TORF :='FALSE';
RETURN(V_TORF);
end if;
end if;
end;