要实现这样的一个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>