有一张节假日的配置表,里面是全年的节假日,包括周六,周日,五一,十一,元旦,春节等等,存的类型是VARCHAR2,例如:"2006-05-01";现在要写这样一个函数,实现的功能是:传入一个varchar2类型的时间跟表里的节假日进行比对,传入后把该时间加上1天(加上1天的功能好像ORACLE里面没有现成的函数)跟表里的记录比对,如果没有存在就把加上一天后的时间给返回出来,如果加上1天后在表里还存在就再加1天,然后进行比对,直到该时间不在表里,然后把该时间返回出来。
如:传入"2006-04-30" 返回 "2006-05-08" ; 传入 "2006-05-12"(周五) 返回 "2006-05-15"(周一)谢谢指教~~~
如:传入"2006-04-30" 返回 "2006-05-08" ; 传入 "2006-05-12"(周五) 返回 "2006-05-15"(周一)谢谢指教~~~
解决方案 »
- (求助)一个诡异的问题
- Oracle 追加大字段列的数据
- 结果中的字段内容在新表中用字段表示,用sql能否实现?
- 关于ORACLE中发邮件的问题
- oracle 8i 吃内存
- 刚从ms sql server转到oracle,求教一个update语句
- Oracle装在XP上有没有问题?
- 为什么Oracle816 的dbms_output.put_line只能输出255 bytes per line?
- 120MB的SQL Server数据库用Migration Workbench迁移到Oracle数据库要多长时间?
- 如何查询oracle 11g数据的登陆ip记录
- 请问要把全年的周六,周日的日期查出来的语句要怎么写?
- 关于触发器中获取时间类型字段的值的问题.
return varchar
is
v_date date;
v_num varchar(10);
char_date varchar(10);
begin
select to_date(v_day,'yyyymmdd')+1 into v_date from dual;
loop
begin
select inday into v_num from h_date where to_date(inday,'yyyy-mm-dd')=v_date;
EXCEPTION
WHEN no_data_found THEN
select to_char(v_date,'yyyy-mm-dd') into char_date from dual;
return char_date;
when others then
return SUBSTR(SQLERRM,1,200);
end;
v_date:=v_date+1;
end loop;
end;
/自已优化一下