1. 程式人生 > 其它 >Java繼承、封裝與多型

Java繼承、封裝與多型

1.建立表

DROP TABLE IF EXISTS `weekly_cycle`;
CREATE TABLE `weekly_cycle`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序號',
  `start_date` date DEFAULT NULL COMMENT '填報開始日期',
  `end_date` date DEFAULT NULL COMMENT '填報停止日期',
  `cycle` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '
週期名稱', `city` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地市公司名稱', `mark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '備註', `flag` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '0' COMMENT '是否可見 1可見 0不可見', PRIMARY KEY (`
id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 26 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of weekly_cycle -- ---------------------------- INSERT INTO `weekly_cycle` VALUES (4, '2021-06-24', '2021-06-30', '2021年6月第四周', '西安', NULL, '
1'); INSERT INTO `weekly_cycle` VALUES (6, '2021-06-24', '2021-06-30', '2021年6月第四周', '渭南', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (7, '2021-06-24', '2021-06-30', '2021年6月第四周', '商洛', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (8, '2021-06-24', '2021-06-30', '2021年6月第四周', '安康', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (9, '2021-06-24', '2021-06-30', '2021年6月第四周', '銅川', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (10, '2021-06-24', '2021-06-30', '2021年6月第四周', '寶雞', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (11, '2021-06-24', '2021-06-30', '2021年6月第四周', '榆林', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (12, '2021-06-24', '2021-06-30', '2021年6月第四周', '延安', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (13, '2021-06-24', '2021-06-30', '2021年6月第四周', '漢中', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (14, '2021-06-24', '2021-06-30', '2021年6月第四周', '西鹹', NULL, '1'); INSERT INTO `weekly_cycle` VALUES (15, '2021-06-24', '2021-06-30', '2021年6月第四周', '咸陽', NULL, '1');
DROP TABLE IF EXISTS `weekly_dict`;
CREATE TABLE `weekly_dict`  (
  `id` int(255) NOT NULL AUTO_INCREMENT COMMENT '編碼',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名稱',
  `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '',
  `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '型別',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '標註釋' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of weekly_dict
-- ----------------------------

INSERT INTO `weekly_dict` VALUES (47, '第一週', '1', 'proc');
INSERT INTO `weekly_dict` VALUES (48, '第二週', '2', 'proc');
INSERT INTO `weekly_dict` VALUES (49, '第三週', '3', 'proc');
INSERT INTO `weekly_dict` VALUES (50, '第四周', '4', 'proc');
DROP TABLE IF EXISTS `weekly_target_amount`;
CREATE TABLE `weekly_target_amount`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `target` double DEFAULT NULL,
  `union_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `year` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of weekly_target_amount
-- ----------------------------
INSERT INTO `weekly_target_amount` VALUES (1, 7000, '西安', '2021');
INSERT INTO `weekly_target_amount` VALUES (2, 150, '咸陽', '2021');
INSERT INTO `weekly_target_amount` VALUES (3, 150, '寶雞', '2021');
INSERT INTO `weekly_target_amount` VALUES (4, 180, '渭南', '2021');
INSERT INTO `weekly_target_amount` VALUES (5, 80, '漢中', '2021');
INSERT INTO `weekly_target_amount` VALUES (6, 120, '安康', '2021');
INSERT INTO `weekly_target_amount` VALUES (7, 120, '商洛', '2021');
INSERT INTO `weekly_target_amount` VALUES (8, 55, '銅川', '2021');
INSERT INTO `weekly_target_amount` VALUES (9, 55, '延安', '2021');
INSERT INTO `weekly_target_amount` VALUES (10, 30, '榆林', '2021');
INSERT INTO `weekly_target_amount` VALUES (11, 60, '西鹹', '2021');

2.建立儲存過程

CREATE DEFINER=`root`@`%` PROCEDURE `pro_test`(in count int(11))
begin
declare temp int default 0;
declare dict_value int ;
declare month_str int;

#初始化month
  select date_format( start_date, '%m' ) into  month_str from weekly_cycle
    where start_date= ( SELECT max( start_date ) FROM weekly_cycle ) 
    group by start_date;

#迴圈插入weekly_cycle
while temp < count DO

#計算dict_value初始值
SELECT
CASE
WHEN
    locate( '', cycle ) THEN
    2 
    WHEN locate( '', cycle ) THEN
    3 
    WHEN locate( '', cycle ) THEN
    4 
    WHEN locate( '', cycle ) THEN
    1 
    END AS cycle into dict_value
FROM
    weekly_cycle 
WHERE
    end_date = ( SELECT max( end_date ) FROM weekly_cycle ) 
GROUP BY
    cycle;

#計算月份
if dict_value = 1 then
  select (date_format( start_date, '%m' )+1) into  month_str from weekly_cycle
    where start_date= ( SELECT max( start_date ) FROM weekly_cycle ) 
    group by start_date;

end if;

#插入新的資料
insert into weekly_cycle(cycle,city,start_date,end_date) 
SELECT
    concat(
    date_format( cycle.new_start_date, '%Y' ),
    '',
     month_str,
    '',
    ( SELECT NAME FROM weekly_dict WHERE type = 'proc' AND VALUE = dict_value ) 
    ) AS cycle,
    city.union_name as city,
    cycle.new_start_date AS start_date,
    cycle.new_end_date AS end_date 
FROM
    ( SELECT DISTINCT union_name FROM weekly_target_amount ) AS city,
    (
SELECT
    date_add( new_weekly_cycle.end_date, INTERVAL 1 DAY ) AS new_start_date,
    date_add( new_weekly_cycle.end_date, INTERVAL 7 DAY ) AS new_end_date 
FROM
    ( SELECT max( start_date ) AS start_date, max( end_date ) AS end_date FROM weekly_cycle ) AS new_weekly_cycle 
    ) AS cycle;

/*

#引數重置迴圈
if (dict_value = 4) then 
    set dict_value = 1;
end if;
set dict_value = dict_value + 1; */
#重置迴圈
set temp = temp + 1;
end while;#結束while迴圈
end