내장함수 LAST_DAY를 프로시저로 구현한 것으로 결과 값이 완전 같지는 않다. 정확히는 LAST_DAY는 DATE타입으로 결과가 나오지만 저건 TO_CHAR로 포멧팅하여서 YYYYMMDD형태로 나오게 된다.
create or replace PROCEDURE LAST_DAY_PROCEDURE
(
CDATE VARCHAR
)
IS
CRETURN VARCHAR(200);
BEGIN
-- 날짜를 받은 후 데이트로 변경하여 한달을 더하고 '01'을 CONCAT한 후 -1일을 함
CRETURN := TO_CHAR(TO_DATE(CONCAT(TO_CHAR(ADD_MONTHS(TO_DATE(CDATE, 'YYYYMMDD'), +1), 'YYYYMM'), '01'), 'YYYYMMDD') - 1, 'YYYYMMDD');
dbms_output.put_line(CRETURN);
END LAST_DAY_PROCEDURE;
변경 -> 기존 LAST_DAY의 경우 받은 DATE를 입력받아도 되기에 SYSDATE도 입력 받을 수 있게 변경.
create or replace PROCEDURE LAST_DAY_PROCEDURE
(
CDATE VARCHAR
)
IS
CRETURN VARCHAR(200);
BEGIN
--아래부분에 LOGIC을 구현할것.
CRETURN := TO_CHAR(TO_DATE(CONCAT(TO_CHAR(ADD_MONTHS(TO_DATE(CDATE), +1), 'YYYYMM'), '01'), 'YYYYMMDD') - 1);
dbms_output.put_line(CRETURN);
END LAST_DAY_PROCEDURE;