Oracle存储过程循环判断并插入数据,今天是周几

在表中插入一年年初到年末的日期(YYYY-MM-DD)并判断是什么标志(标志:工作日[周一到周四]. 周五 .周末).

1.创建表
create table test_day(
      v_day varchar2(20) not null,   -- 日期 格式:YYYY-MM-DD
      v_day2 varchar2(20) not null   -- 标志:工作日(周一到周四) 周五  周末
)
2.编写存储过程
--循环判断插入日期类型
CREATE OR REPLACE PROCEDURE SP_PDSJ(P IN VARCHAR2) IS -- 结果
    V_BEGIN VARCHAR2(30) := TO_CHAR(trunc(sysdate,'yyyy'),'YYYY-MM-DD');
    V_END   VARCHAR2(30) := TO_CHAR(add_months(trunc(sysdate,'yyyy'),12)-1,'YYYY-MM-DD');
    
    V_DATE_EMP VARCHAR2(30) := V_BEGIN;
    V_FLAG VARCHAR2(30) := '';
    V_DAY VARCHAR2(30) := '';-- 需要的
BEGIN  
    while V_DATE_EMP < V_END 
    loop
        -- 判断星期几
        select to_char(TO_DATE(V_DATE_EMP,'YYYY-MM-DD'),'day') into V_FLAG from dual;
        -- 中间调整
        IF V_FLAG ='星期一' or V_FLAG ='星期二' or V_FLAG ='星期三' or V_FLAG ='星期四' THEN
               V_FLAG := '工作日'; 
        ELSIF V_FLAG ='星期五' THEN
               V_FLAG := '周五';
        ELSIF V_FLAG ='星期六' or V_FLAG ='星期天' THEN
               V_FLAG := '周末';
        END IF;
        DBMS_OUTPUT.put_line(V_DATE_EMP||':'||V_FLAG);
        insert into test_day(v_day,v_day2) values (V_DATE_EMP,V_FLAG);
        commit;
        -- 加一天
        SELECT TO_CHAR(TO_DATE(V_DATE_EMP,'YYYY-MM-DD')+1,'YYYY-MM-DD') INTO V_DATE_EMP FROM DUAL;
        DBMS_OUTPUT.put_line(V_DATE_EMP);
    end loop;
END;
3.运行存储过程
BEGIN 
    SP_PDSJ('2019-01-05');
END;
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值