create table test_day(
v_day varchar2(20) not null,-- 日期 格式:YYYY-MM-DD
v_day2 varchar2(20) not null-- 标志:工作日(周一到周四) 周五 周末
)
2.编写存储过程
--循环判断插入日期类型
CREATEORREPLACEPROCEDURESP_PDSJ(PINVARCHAR2)IS-- 结果
V_BEGINVARCHAR2(30):=TO_CHAR(trunc(sysdate,'yyyy'),'YYYY-MM-DD');V_ENDVARCHAR2(30):=TO_CHAR(add_months(trunc(sysdate,'yyyy'),12)-1,'YYYY-MM-DD');V_DATE_EMPVARCHAR2(30):=V_BEGIN;V_FLAGVARCHAR2(30):='';V_DAYVARCHAR2(30):='';-- 需要的
BEGINwhileV_DATE_EMP<V_END
loop
-- 判断星期几
select to_char(TO_DATE(V_DATE_EMP,'YYYY-MM-DD'),'day') into V_FLAGfrom dual;-- 中间调整
IFV_FLAG='星期一' or V_FLAG='星期二' or V_FLAG='星期三' or V_FLAG='星期四'THENV_FLAG:='工作日';ELSIFV_FLAG='星期五'THENV_FLAG:='周五';ELSIFV_FLAG='星期六' or V_FLAG='星期天'THENV_FLAG:='周末';ENDIF;DBMS_OUTPUT.put_line(V_DATE_EMP||':'||V_FLAG);
insert into test_day(v_day,v_day2)values(V_DATE_EMP,V_FLAG);
commit;-- 加一天
SELECTTO_CHAR(TO_DATE(V_DATE_EMP,'YYYY-MM-DD')+1,'YYYY-MM-DD')INTOV_DATE_EMPFROMDUAL;DBMS_OUTPUT.put_line(V_DATE_EMP);
end loop;END;