CREATE OR REPLACE PROCEDURE SP_DEL_PROCEDURE
(
TABLE_NAME IN VARCHAR2 ,
TABLE_PARAM IN VARCHAR2
)
IS
PD_ERRNUM NUMBER;
PD_ERRMSG VARCHAR2 (200);
PD_SDATE DATE ;
PD_DELCOUNT NUMBER ;
PD_QUERY VARCHAR2(100);
BEGIN
--프로시저 실행한 날짜 셋팅
SELECT SYSDATE INTO PD_SDATE FROM DUAL ;
--DELETE 프로시저 실행
PD_QUERY := 'DELETE FROM ' || TABLE_NAME ||
' WHERE ' || TABLE_PARAM || ';';
EXECUTE IMMEDIATE PD_QUERY ;
PD_DELCOUNT := SQL%ROWCOUNT ;
--성공시 LOG TABLE INSERT
INSERT INTO PROCEDURE_LOG_T
(PD_TABLE_NAME , PD_SUCCESS , PD_SDATE , PD_EDATE , PD_MSG , PD_DELCOUNT ,PD_WHERE )
VALUES
(TABLE_NAME ,'SUCCESS', PD_SDATE , SYSDATE, 'DELETE PROC SUCCESS' , PD_DELCOUNT , TABLE_PARAM );
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
PD_ERRNUM := sqlcode;
PD_ERRMSG := substr(sqlerrm , 1, 99);
PD_DELCOUNT := 0 ;
--실패시 LOG TABLE INSERT
INSERT INTO PROCEDURE_LOG_T
(PD_TABLE_NAME , PD_SUCCESS , PD_SDATE , PD_EDATE , PD_MSG , PD_DELCOUNT ,PD_WHERE)
VALUES
(TABLE_NAME ,'FAIL', PD_SDATE ,SYSDATE,'ERROR:'||PD_ERRNUM||'-'||PD_ERRMSG , PD_DELCOUNT , TABLE_PARAM);
END;
/
'자기 개발 > Oracle' 카테고리의 다른 글
날짜함수 SYSDATE, MONTHS_BETWEEN, NEXT_DAY, LAST_DAY, ADD_MONTH, TRUNC (0) | 2014.06.16 |
---|---|
PL/SQL 커서 - BULK COLLECT (0) | 2014.06.16 |
오라클 파티션(PARTITION) 조회 (0) | 2014.06.10 |
PL/SQL 예외처리 (0) | 2014.06.09 |
Index 란? (0) | 2014.06.05 |