当前位置: 代码迷 >> Oracle开发 >> Oracle function里这样的for loop如何实现
  详细解决方案

Oracle function里这样的for loop如何实现

热度:331   发布时间:2016-04-24 06:23:25.0
Oracle function里这样的for loop怎么实现?
要实现这样的一个Oracle Function:

1. 输入起止日期
2. 判断起止日期是否是某几个特定日期,是的话,计数加1.

觉着用for loop循环最合适,但是总是变异不过去,请高手帮忙看看怎么写,主要就是for循环段不行:

FOR holiday in (to_date('2015-10-03','YYYY-MM-DD'),to_date('2015-10-03','YYYY-MM-DD'),to_date('2015-10-03','YYYY-MM-DD')) 
    LOOP  
    if holiday<=end_date and holiday >=start_date then
      m_hol := m_hol + 1;
    end if;
    end LOOP;
------解决思路----------------------
for in后面不能这么使用枚举
可以放在数组,或是 select .. union..语句里来遍历
------解决思路----------------------
你这个要使用数组实现 ,给你一个简单的例子

SQL> declare
  2      type t_list is table of date index by pls_integer ;
  3      list t_list ;
  4  begin
  5      list(1) := to_date('2015-10-03','YYYY-MM-DD') ;
  6      list(2) := to_date('2015-10-04','YYYY-MM-DD') ;
  7      list(3) := to_date('2015-10-05','YYYY-MM-DD') ;
  8      for i in 1.. list.count
  9      loop
 10          dbms_output.put_line(list(i)) ;
 11      end loop ;
 12  end ;
 13  /
03-10月-15
04-10月-15
05-10月-15
PL/SQL procedure successfully completed

SQL> 

  相关解决方案