首页 > 解决方案 > 如何在 select 语句中使用用户定义的函数作为光标来实现结果?

问题描述

我有以下光标:

OPEN p_results FOR
      SELECT distinct S02.CONVERSATION_ID, S02.INTERNAL_USI, S02.PRN,  S02.CRN, 
             S01.EARLIEST_B_DATE "Bank Date", S01.EARLIEST_B_NARRATIVE||'DSEC' "BN", 
             abs(S01.TOTAL_B_AMOUNT - S02.TOTAL_C_AMOUNT) "GA", 
             decode(S01.EXTRA_FLAG_4,1,'OP',2,'UP') "Batch Status", 
             (case 
                when S01.latest_b_date > S02.latest_c_date then S01.latest_b_date 
                else S02.latest_c_date 
              end ) Effective_Date, S02.ICC_ID,  
             S02.MATCH_METHOD,
             S01.TOTAL_B_AMOUNT                     
      FROM TTPAY S01,   
           TTCONT S02    
      Where S01.EXTRA_FLAG_4 in (1,2) 
      and   S02.EXTRA_FLAG_4 in (1,2) 
      and   S01.Match_no = 0 
      and   S02.Match_no = 0 
      and S01.PRN = S02.PRN;

对于这段代码,我必须进行更改,如果下面结果中的生效日期是假期或周末,那么我需要添加 +1 和星期六 +2 否则我将使用返回的结果下面的代码为有效日期。

(case 
        when S01.latest_b_date > S02.latest_c_date then S01.latest_b_date 
        else S02.latest_c_date 
      end ) Effective_Date

我有一个名为的函数WORKING_DAY,它将一个日期作为参数,并在检查假期日历和周末时TRUEFALSE之后返回布尔值。

如何有效地使用上述代码片段中的该函数来获取所需的日期?

标签: sqloracleplsql

解决方案


如果这是某种报告并在 sql 中执行。例如

with
  function wf_WORKING_DAY(p_Date date) return number is
  begin
    return case when WORKING_DAY(p_Date) then 1 else 0 end;
  end;
select wf_WORKING_DAY(date'2020-01-01')
  from dual
/

推荐阅读