我正在尝试修改员工界面文件中使用的 SELECT 语句,因为它在通过员工END_DATE时返回错误是......好"过时"。
我对此很陌生,所以为了跳过结束日期的 Oracle 用户,我觉得在这里使用 NVL 表达式是最好的?但是,在研究了它之后,我只是不太了解这个概念,并且不确定它是否是我应该使用的。
以下是声明:
FROM oaa.xxap_employee_interim ei,
hr.per_all_people_f ppf,
hr.per_all_assignments_f paf,
hr.per_addresses pa,
apps.fnd_user u
WHERE new_update = 'U'
AND ppf.person_type_id = 6
AND ei.employee_number = ppf.employee_number
AND ppf.effective_end_date >= SYSDATE
AND ppf.person_id = paf.person_id
AND paf.effective_end_date >= SYSDATE
AND ppf.person_id = pa.person_id
AND u.employee_id = ppf.person_id
--AND NVL(u.end_date, SYSDATE + 5);
一位同事还建议我,在这种情况下使用"IS NULL"是不正确的。这是真的吗?如果是这样,为什么?
提前谢谢。
我猜你想检查you.end_date是过去的日期还是不为空。 在这种情况下,我将使用以下方法:
AND COALESCE(u.end_date, SYSDATE) < SYSDATE
甲骨文的具体方法是
AND NVL(u.end_date, SYSDATE) < SYSDATE