【发布时间】:2020-05-21 18:32:05
【问题描述】:
我需要编写一个函数来检查员工的第一个和最后一个日期的有效性。
ncount NUMBER;
SELECT
*
FROM employee emp
WHERE emp.name = e.name
and emp.dept_name = e.dept_name
and emp.designation = e.designation
and emp.name = ‘Claire’ and
emp.designation = ‘MGR’ ;
select count(*) into nCount from employee;
如果没有给出最后日期,请告诉我如何才能获得上一条记录的正确结果。
【问题讨论】:
-
在 e.first_date 和 NVL(e.end_date, TO_DATE('12/31/9999','MM/DD/YYYY') 之间尝试 nvl(End_Date,e.first_date) 。这是为了将 End_Date 上的 Null 值视为员工的有效活动期。
-
'我需要在 Oracle PL/SQL 中编写查询' - SQL 是一种查询语言,PL/SQL 是一种编程语言。您将在 PL/SQL 中编写包、过程、函数、触发器、类型等,而不是查询。
-
是的.. 我倾向于先写一个查询并测试它。然后想到将其包含在Function中
-
VN'sCorner,如果我在 e.first_date 和 NVL(e.end_date, TO_DATE('12/31/9999','MM/DD/ 之间包含 "nvl(End_Date,e.first_date)) YYYY') "... 对于没有 end_date 的先前记录以及没有 end_date 的未来记录,它给出 nCount = 0.. 这是不正确的
-
添加一个额外的 OR 条件为 or e.last_date 是 NULL 就我理解的场景应该可以完成这项工作。
标签: oracle date validation plsql overlap