Oracle批量生成日历数据表
目标:生成从2018年01月01日起后延50年的日历数据表,周六日默认是节假日,法定假日需要手动维护。
步骤1:创建表
-- Create table
create table KR_HOLIDAY_MANAGE
(
sys_id VARCHAR2(50) not null,
set_date VARCHAR2(10) not null,
year VARCHAR2(4),
month VARCHAR2(2),
week VARCHAR2(20),
year_num VARCHAR2(3),
month_num VARCHAR2(2),
is_holiday VARCHAR2(2) not null,
remarks VARCHAR2(50)
);
-- Add comments to the table
comment on table KR_HOLIDAY_MANAGE
is '假日信息表';
-- Add comments to the columns
comment on column KR_HOLIDAY_MANAGE.sys_id
is '系统标识';
comment on column KR_HOLIDAY_MANAGE.set_date
is '日';
comment on column KR_HOLIDAY_MANAGE.year
is '年';
comment on column KR_HOLIDAY_MANAGE.month
is '月';
comment on column KR_HOLIDAY_MANAGE.week
is '星期几';
comment on column KR_HOLIDAY_MANAGE.year_num
is '年的第几天';
comment on column KR_HOLIDAY_MANAGE.month_num
is '月的第几天';
comment on column KR_HOLIDAY_MANAGE.is_holiday
is '是否假日:1是、0否,默认值为0';
comment on column KR_HOLIDAY_MANAGE.remarks
is '备注';
-- Create/Recreate indexes
create index HOLEDAY_IDX on KR_HOLIDAY_MANAGE (IS_HOLIDAY)
tablespace KEYRISK
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
create index HOLEDAY_IDX_YEAR on KR_HOLIDAY_MANAGE (YEAR);
alter table KR_HOLIDAY_MANAGE add primary key (SYS_ID, SET_DATE);
步骤2: 创建过程
DECLARE
D_DATE DATE;
V_BEGIN_DATE VARCHAR2(8);
BEGIN
V_BEGIN_DATE := '20180101';
D_DATE := TO_DATE(V_BEGIN_DATE,'YYYYMMDD');
EXECUTE IMMEDIATE 'TRUNCATE TABLE KR_HOLIDAY_MANAGE';
WHILE D_DATE < ADD_MONTHS(TO_DATE(V_BEGIN_DATE,'YYYYMMDD'),600) LOOP
INSERT INTO KR_HOLIDAY_MANAGE
SELECT '0',
TO_CHAR(D_DATE,'YYYYMMDD') SET_DATE,
TO_CHAR(D_DATE,'YYYY') YEAR,
TO_CHAR(D_DATE,'MM') MONTH,
TO_CHAR(D_DATE,'DAY') WEEK,
TO_CHAR(D_DATE,'DDD') YEAR_NUM,
TO_CHAR(D_DATE,'DD') MONTH_NUM,
CASE WHEN TO_CHAR(D_DATE,'D') IN ('1','7') THEN '1' ELSE '0' END IS_HOLIDAY,
''
FROM DUAL;
D_DATE := D_DATE + 1;
END LOOP;
COMMIT;
DBMS_OUTPUT.PUT_LINE('S');
END;
结果截图:
Oracle批量生成日历数据表相关推荐
- Oracle新建的用户看不到表,Oracle 创建用户及数据表的方法
Oracle 创建用户及数据表的方法 更新时间:2009年09月25日 23:13:29 作者: 刚开始学习oracle的朋友可以看下,这个是基础了. 一.概念 1. 数据库 (Database) ...
- 改用C++生成自动化数据表
改用C++生成自动化数据表 前面的文章中,我们讨论了使用一个基于.NET的第三方程序库来从程序中来生成数据表.在我看来,这整个思路是非常有用的,例如为显示测试结果.我经常会自己在博客中尝试各种像这样的 ...
- Oracle中表的键和检查,Oracle 过程中检查数据表存在与否
在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,确保数据完整性 使用方法:p_C ...
- 一个批量生成联系人数据(vcf)的小工具
一个批量生成联系人数据的小工具(vcf) 1.Python代码 代码如下(示例): import random def create_contact(number):surname = [" ...
- oracle两表交集查询,Oracle对两个数据表交集的查询
正在看的ORACLE教程是:Oracle对两个数据表交集的查询. Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想 ...
- php 批量生成数量,laravel批量生成假数据的方法
D:\phpStudy\WWW\api.douxiaoli.com\database\factories\ModelFactory.php D:\phpStudy\WWW\BCCKidV1.0\ven ...
- oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表
[问题]现在有两个千万级别的结构相同数据不同数据表T_SMS_PHONENO(目的表),T_SMS_PHONENO2(源表),根据源表数据更新目的表的数据. [分析]根据经验,更新方法一般有以下几种: ...
- oracle批量修改多张表的数据,Oracle批量修改用户表table的表空间
一.修改用户表table的表空间 1.修改用户表table的表空间:alter table 表名 move tablespace 新表空间名; 2.查询所有用户表:select * from user ...
- oracle中生成大批量数据的方法-下
方法五:使用PLSQL的数据生成器 首先测试环境建立:dept表 CREATE TABLE dept(deptno NUMBER(6),dname VARCHAR2(20),loc VARCHAR2( ...
最新文章
- tplink wr886n v5.0 ttl 接线方法
- 多数大数据项目都以失败而告终的原因
- C++实现字符全排列
- jquery easyui combobox设置默认选中第一项
- Redis基础知识之————如何处理客户端连接
- 中leetcode提示未登录_分享一款将 LeetCode 中 AC 的题目转化为 MarkDown 表格的插件...
- jquery ajax 防止浏览器缓存
- 移动Oracle的用户表空间文件方法
- (113)FPGA面试题-LUT计算问题
- 张杰和机器人_科学艺术两开花,国内首个机器人乐队诞生有什么重要的意义?...
- python模拟一个简单的取款机,python简单区块链模拟详解
- sql server 转发_SQL Server中的转发记录性能问题
- 网上购物系统-关系型数据库设计举例
- 基于原语的千兆以太网RGMII接口设计
- ROG 2022 款幻 13 评测
- MySQL - Failed to open the referenced table XXX
- python如何给某列数据打标签_Python map, apply, transform 打标签方法汇总(初阶到高阶)...
- C语言 —— 多维数组
- alpine 使用国内源
- Context Contrasted Feature and Gated Multi-scale Aggregation for Scene Segmentation