# P7 - Age_calc function ## Creating function ```sql CREATE OR REPLACE FUNCTION P7( dob IN DATE, f_month OUT NUMBER, f_day OUT NUMBER ) RETURN NUMBER IS current_date DATE := SYSDATE; year_diff NUMBER; month_diff NUMBER; day_diff NUMBER; BEGIN year_diff := EXTRACT(YEAR FROM current_date) - EXTRACT(YEAR FROM dob); month_diff := EXTRACT(MONTH FROM current_date) - EXTRACT(MONTH FROM dob); day_diff := EXTRACT(DAY FROM current_date) - EXTRACT(DAY FROM dob); IF (day_diff < 0) THEN month_diff := month_diff - 1; day_diff := day_diff + EXTRACT(DAY FROM last_day(add_months(SYSDATE, -1))); END IF; IF (month_diff < 0) THEN year_diff := year_diff - 1; month_diff := month_diff + 12; END IF; f_month := month_diff; f_day := day_diff; RETURN year_diff; END; / ``` ## Calling function ```sql DECLARE years NUMBER; months NUMBER; days NUMBER; BEGIN years := P7(TO_DATE('2003-12-02', 'YYYY-MM-DD'), months, days); DBMS_OUTPUT.PUT_LINE('Age: ' || years || ' Years ' || months || ' Months ' || days || ' Days.'); END; / ``` ---