You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle PL/SQL存储过程实现向MYTABLE插入2000至2100年日期

Oracle PL/SQL存储过程:填充MYTABLE日期数据

以下是符合需求的PL/SQL存储过程,用于向MYTABLE表批量插入2000-01-01至2100-01-01的日期数据:

CREATE OR REPLACE PROCEDURE POPULATE_MYTABLE
IS
BEGIN
    -- 批量插入日期数据,利用CONNECT BY生成连续日期序列
    INSERT INTO MYTABLE (ID, DATE1, QUARTAL, MONTH, WEEKDAY)
    SELECT 
        TO_CHAR(date_seq, 'YYYY') AS ID,
        date_seq AS DATE1,
        TO_CHAR(date_seq, '"Q"Q') AS QUARTAL,
        EXTRACT(MONTH FROM date_seq) AS MONTH,
        -- 判断是否为工作日(周一至周五为YES,周六周日为NO)
        CASE 
            WHEN TO_CHAR(date_seq, 'DY', 'NLS_DATE_LANGUAGE=ENGLISH') IN ('SAT', 'SUN') 
            THEN 'NO' 
            ELSE 'YES' 
        END AS WEEKDAY
    FROM (
        -- 生成2000-01-01到2100-01-01的连续日期
        SELECT DATE '2000-01-01' + LEVEL - 1 AS date_seq
        FROM DUAL
        CONNECT BY LEVEL <= DATE '2100-01-01' - DATE '2000-01-01' + 1
    );
    
    COMMIT;
    DBMS_OUTPUT.PUT_LINE('数据插入完成,共插入' || SQL%ROWCOUNT || '条记录');
EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        DBMS_OUTPUT.PUT_LINE('插入失败,错误信息:' || SQLERRM);
        RAISE;
END POPULATE_MYTABLE;
/

字段逻辑说明

  • ID:通过TO_CHAR(date_seq, 'YYYY')将日期的年份转换为4位字符串格式。
  • DATE1:利用CONNECT BY生成的连续日期序列,覆盖2000-01-01至2100-01-01的每一天。
  • QUARTAL:使用TO_CHAR(date_seq, '"Q"Q')直接生成带Q前缀的季度标识(如Q1、Q2)。
  • MONTH:通过EXTRACT(MONTH FROM date_seq)提取日期对应的月份数字(1-12)。
  • WEEKDAY:通过CASE语句结合英文星期缩写判断,确保不受数据库语言环境影响,周六、周日标记为NO,其余工作日标记为YES。

使用说明

  1. 确保当前用户拥有MYTABLE表的插入权限。
  2. 执行存储过程:EXEC POPULATE_MYTABLE;
  3. 可通过DBMS_OUTPUT查看执行结果或错误信息。

内容的提问来源于stack exchange,提问作者rick67

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:25:18