编写一个代码检查星期天休息并让所有部分工作正常,除了离开部分

Posted

技术标签:

【中文标题】编写一个代码检查星期天休息并让所有部分工作正常,除了离开部分【英文标题】:Write a code which check sunday week rest and leaves all parts works fine except leave part 【发布时间】:2021-03-09 06:16:18 【问题描述】:

我写了一个代码,除了离开和部分不工作之外,一切都很好,请给我一些可能对我有帮助的东西

function CF_WEEKRESTFormula return CHAR is
v_rest     number;
gaz_dt     number;
descr      varchar2(90);
gz_dt      date;
AT_P             VARCHAR2(10);
BEGIN
  SELECT week_rest
  INTO   v_rest
  FROM   EMPLOYEES
  WHERE  employee_id1=:employee_id1
  AND    :ATT_DATE between :DATE1 and :DATE2;
  select gazzeted_date, description into gz_dt, descr 
  from gazzeted_days
  where gazzeted_date between :DATE1 and :DATE2;
  select ATT_PRESENT into AT_P 
  from PAY_IN_OUT
  where ATT_PRESENT = 'L' 
  AND  EMP_CODE=:employee_id1
  AND :ATT_DATE between :DATE1 and :DATE2;
  
  IF TO_CHAR( :ATT_DATE, 'D' ) = v_rest THEN
    RETURN 'WEEK REST';
  ELSIF
    :ATT_DATE = GZ_DT THEN 
    RETURN DESCR;
  ELSIF AT_P = TO_CHAR(:ATT_DATE) THEN 
    RETURN 'LEAVE';
    ELSE RETURN 'PRESENT';
  END IF;
  exception 
       when No_data_found 
         then return 'a';
END;

除了这部分之外的所有工作

ELSIF AT_P = TO_CHAR(:ATT_DATE) THEN 
    RETURN 'LEAVE';

如果有 l 则检查 att_date 的 L agt 日期在哪里,然后给 Leave att_date 请给我一些建议 问候

【问题讨论】:

【参考方案1】: AT_Pvarchar2(10) 您在其中选择了ATT_PRESENT,但我们不知道它的数据类型 - 大概是一个字符串 当您稍后将其与:att_date 进行比较时,字符串 可能代表某个日期值 如果是这样,您不应该这样做 - 始终将日期存储到 DATE 数据类型列中 :ATT_DATE 看起来像 DATE 数据类型;是吗?还是VARCHAR2? 如果是DATE,那么应用TO_CHAR 是有意义的,但是缺少格式 - 你应该提供它,它应该与返回到at_p 的那个匹配 如果是VARCHAR2,那再TO_CHAR-ing也没用了

因此:我认为 - 如果您将格式应用于 :ATT_DATE,则可能会发生积极的。例如,如果:att_date = '03/08/2021'mm/dd/yyyy 格式的今天日期):

elsif at_p = to_char(:att_date, 'mm/dd/yyyy') then
  return 'leave';

确切的代码取决于真正存储在at_p:att_date 中的内容。

【讨论】:

at_p 存储字符串,如 L 和 `P` 和 att_date 有我想要的日期,其中日期等于 att_date = L 然后如果 att_present 有 L,则返回 03/09/21 的平均值然后它显示 Leave else is Present 并且其他所有代码都很好 显然,您不能将 L 或 P 与代表 日期 的 ATT_DATE 进行比较,它们永远不会匹配。应该是例如ELSIF AT_P = 'L' THEN return 'leave'? 它为所有字段提供 Leave 我先尝试了,我可以为此做更多的事情,请帮助我

以上是关于编写一个代码检查星期天休息并让所有部分工作正常,除了离开部分的主要内容,如果未能解决你的问题,请参考以下文章

当您连接 2 个具有相同架构的表并检查除一个以外的所有字段是不是相等时,如何避免在 SQL 中编写冗长的 where 子句?

用于检查是否在工作时间工作的公式

使用java 排除 两个日期段中的 休息日和节假日 。在线等待中十万火急,求大牛帮忙,多谢了。。。。

如何编码 WordPress 插件软件更新?

如何编写测试用例以使用r中的testthat检查函数是否正常工作?

如何修复Code以使C#中的Fibonacci搜索算法正常 工作