add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select * from V$VERSION;
BANNER BANNER_FULL BANNER_LEGACY CON_ID
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production 0
CREATE OR REPLACE PACKAGE pa_feiertage_mau IS

type type_feiertage is record (
datum date
, feiertag varchar2(30)
);
type type_tab_feiertage is table of type_feiertage;

FUNCTION calc_holidays (in_year_c IN INTEGER)
RETURN DATE;

FUNCTION get_holidays (in_year1 IN VARCHAR2)
RETURN Type_tab_feiertage
PIPELINED;

end;
/
CREATE OR REPLACE PACKAGE BODY pa_feiertage_mau IS


FUNCTION calc_holidays (in_year_c IN INTEGER)
RETURN DATE
IS
v_k INTEGER;
v_m INTEGER;
v_s INTEGER;
v_a INTEGER;
v_d INTEGER;
v_r INTEGER;
v_og INTEGER;
v_sz INTEGER;
v_oe INTEGER;
v_os INTEGER;
v_day INTEGER;
v_month INTEGER;
BEGIN
v_k := floor(in_year_c / 100);
v_m := 15 + floor((3 * v_k + 3) / 4) - floor((8 * v_k + 13) / 25);
v_s := 2 - floor((3 * v_k + 3) / 4);
v_a := MOD(in_year_c, 19);
v_d := MOD((19 * v_a + v_m), 30);
v_r := floor(v_d / 29) + (floor(v_d / 28) - floor(v_d / 29)) * floor(v_a / 11);
v_og := 21 + v_d - v_r;
v_sz := 7 - MOD((in_year_c + floor(in_year_c / 4) + v_s), 7);
v_oe := 7 - MOD(v_og - v_sz, 7);
v_os := v_og + v_oe;
IF (v_os <= 31) THEN
v_day := v_os;
v_month := 3;
ELSE
v_day := v_os - 31;
v_month := 4;
END IF;
select * from all_errors where name = 'PA_FEIERTAGE_MAU';
select * from table(pa_feiertage_mau.get_holidays ('2020'))t order by t.datum ;
DATUM FEIERTAG
01-JAN-20 Neujahr
06-JAN-20 3kings
08-MAR-20 Fraut
09-APR-20 Gruen
10-APR-20 Karf
12-APR-20 Ostern
13-APR-20 Osterm
01-MAY-20 Arbeit
21-MAY-20 Chimmel
31-MAY-20 Pfingsts
01-JUN-20 Pfingstm
11-JUN-20 Fronlei
15-AUG-20 Himmel
03-OCT-20 Deu
31-OCT-20 Refo
01-NOV-20 Aller
25-DEC-20 Wh1
26-DEC-20 Wh2