我需要获得第n个上一个营业日期
BEGIN
SELECT holiday_ind
INTO v_holiday_ind
FROM holiday_calendar
AND bus_date = L_bus_dt;
EXCEPTION
WHEN OTHERS THEN
V_holiday_ind=’N’
END;
现在用户将输入一个日期和一个整数说n
我必须从输入日期减去n个工作日并提供输出
例如,如果用户输入2015年5月26日和2,则输出应为2015年5月20日,因为2015年5月25日是阵亡将士纪念日,2015年5月23日可能会在2015年5月24日太阳
我试过了
FOR i IN 1..n
LOOP
BEGIN
SELECT holiday_ind
INTO v_holiday_ind
FROM holiday_calendar
AND bus_date = L_bus_dt;
EXCEPTION
WHEN OTHERS THEN
V_holiday_ind=’N’
END;
L_bus_date := L_bus_date - n;
END LOOP;
但没有工作
请帮忙
答案 0 :(得分:0)
您的代码段中存在语法错误,我认为使用FOR LOOP可能不合适。
这里我假设holiday_calendar也包含周末信息。 代码将是这样的
begin
while n > 0
loop
if l_bus_dt is holiday / weekend then
l_bus_dt = l_bus_dt - 1
otherwise
l_bus_dt = l_bus_dt - 1
n = n - 1
end if
end loop
end
希望这会有所帮助。