Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Function Procedure Packages
 

Date time calculation function

SQL> SQL> CREATE OR REPLACE FUNCTION expiration_date (   2      good_for_period_in IN INTERVAL YEAR TO MONTH   3  )   4      RETURN TIMESTAMP   5  IS   6     bad_month EXCEPTION;   7     PRAGMA EXCEPTION_INIT (bad_month, -1839);   8   9     todays_date TIMESTAMP;  10     result_date TIMESTAMP;  11  BEGIN  12     todays_date := TRUNC(SYSTIMESTAMP);  13     LOOP  14        BEGIN  15           result_date := todays_date + good_for_period_in;  16        EXCEPTION  17           WHEN bad_month THEN  18              todays_date := todays_date - INTERVAL '1' DAY;  19           WHEN OTHERS THEN  20              RAISE;  21        END;  22  23        EXIT WHEN result_date IS NOT NULL;  24     END LOOP;  25     RETURN result_date;  26  END;  27  / Function created.