【问题标题】:Saving records based on the Date validations in Oracle PL/SQL根据 Oracle PL/SQL 中的日期验证保存记录
【发布时间】: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


【解决方案1】:

提供的查询似乎过于复杂。不需要自连接,因为我们根据特定条件下的变量值验证记录的存在。 下面的查询就足够了:

WITH employee_records as
         (SELECT  * 
          FROM employee emp
          WHERE emp.name = 'Claire' 
          and   emp.dept_name = 'SALES' 
          and   emp.designation = 'MGR'                 
   and ( First_Date between emp.first_date and NVL(emp.end_date, TO_DATE('12/31/9999','MM/DD/YYYY')) OR
         End_Date between emp.first_date and NVL(emp.end_date, TO_DATE('12/31/9999','MM/DD/YYYY')) OR                   
        End_Date is null)
  select  count(*) into nCount from employee_records;

【讨论】:

  • 感谢 Corner 和其他人。感谢您对此的帮助。我试图通过编写验证并检查在给定没有最后日期的过去数据之后是否存在任何其他记录来弄清楚这一点。成功了。
猜你喜欢
  • 2017-10-20
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
相关资源
最近更新 更多