SQL>
SQL> SET ECHO ON
SQL>
SQL> CREATE OR REPLACE FUNCTION add_mon (date_in DATE,months_to_add NUMBER)
2 RETURN DATE AS
3 day_in VARCHAR2(3);
4 day_work VARCHAR2(3);
5 date_out DATE;
6 date_work DATE;
7 BEGIN
8
9 day_in := TO_NUMBER(TO_CHAR(date_in,'dd'));
10 date_work := ADD_MONTHS(date_in, months_to_add);
11 day_work := TO_NUMBER(TO_CHAR(date_work,'dd'));
12 IF day_in = day_work THEN
13 date_out := date_work;
14 ELSIF day_work < day_in THEN
15 date_out := date_work;
16 ELSE
17 date_out := date_work - (day_work - day_in);
18 END IF;
19
20 RETURN date_out;
21 END;
22 /
Function created.
SQL> show error
No errors.
SQL>
SQL> select add_mon(sysdate, 6) from dual;
ADD_MON(SYSDATE,6)
--------------------
16-DEC-2008 18:11:35
1 row selected.
SQL>
SQL> --
|