令人困惑的情況如此與我無關......pl sql函數具有嵌套if和multiple選項
我有一個看法。該視圖具有基於兩個條件返回「TRUE」或「FALSE」的文本字符串的功能
該函數查看兩個表。
條件1:客戶表包含一個日期字段 - 如果系統日期>日期字段應該返回false
條件2:客戶錶鏈接到一個customer_detail表。在細節表中有時會有記錄,有時不會(因此我將外部聯接語法符號添加到查詢中,因爲附加條件會強制內部聯接,所以我沒有做任何事情)。客戶表中的每條記錄在customer_detail表中可以有多個記錄。如果細節表中有多條記錄,我需要查看最近的記錄max(uniquefield)。這個表格有一個日期字段。如果該字段不爲空,則該函數應返回第一個條件的錯誤關鍵字。
這是我的。當我編譯我得到兩個錯誤:
SQL statment忽視 - 在第一選擇statment
和
錯誤(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;