步骤分析:
1.定义所需变量,含义详见注释
2.赋初值,删除即将新增的数据(避免重复新增周末)
3.计算开始时间所在的周日(第一个),若周六在开始之前再往下查七天
4.循环执行,若下一个周日在结束日期之前即执行,新增至节假日表
案例演示:
--删除存储过程(批量新增周末);执行sql
--DROP FUNCTION batch_add_weeks(begin_date varchar,end_date varchar);
--定义(开始日期,截止日期),备注:结束时间的年份为假节日年份
CREATE OR REPLACE FUNCTION batch_add_weeks(begin_date varchar,end_date varchar)
RETURNS integer AS
$body$
declare
--开始日期所在的周日
first_sunday timestamp;
--第一个或者下一个周日
next_sunday timestamp;
--周六,周日
saturday varchar;sunday varchar;
--年份,增加周数
add_year varchar; add_weeks integer;
ii integer;
--测试打印sql字段
--batch_add_weeks text;
BEGIN
ii = 1;--batch_add_weeks = '';
add_year = to_char(to_date(end_date,<