SQL SELECT for Cursor using an NVL



我正在尝试修改员工界面文件中使用的 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

相关内容

最新更新