프로시져샘플

CREATE OR REPLACE PROCEDURE S_Bank_SP (
SP_Bank_CD IN S_Bank.Bank_CD%TYPE,
SP_Bank_Name IN S_Bank.Bank_Name%TYPE,
SP_isUse IN S_Bank.isUse%TYPE,
SP_Remark IN S_Bank.Remark%TYPE,
SP_Work_User IN S_Bank.Work_User%TYPE,
SP_Classify IN NUMBER,
SP_RetCode OUT VARCHAR2,
SP_RetStr OUT VARCHAR2
)
IS
vWork_Date S_Bank.Work_Date%TYPE;
vWork_Time S_Bank.Work_Time%TYPE;
vLog_Str VARCHAR2(50);
BEGIN
/* --------------------------------------------------------------------- */
/* 입력오류 체크 */
/* --------------------------------------------------------------------- */
IF NVL(Length(LTrim(SP_Bank_CD)), 0) = 0 THEN
SP_RetCode := '0';
SP_RetStr := '은행코드를 입력해 주시기 바랍니다.';
RETURN;
END IF;

-- 저장/수정시 입력값 체크
IF SP_Classify <> 3 THEN
IF NVL(Length(LTrim(SP_Bank_Name)), 0) = 0 THEN
SP_RetCode := '0';
SP_RetStr := '은행명을 입력해 주시기 바랍니다.';
RETURN;
END IF;
END IF;

/* --------------------------------------------------------------------- */
/* 일반사항 */
/* --------------------------------------------------------------------- */
-- 작업일자 및 시간을 구한다.
vWork_Date := TO_CHAR(SYSDATE, 'YYYYMMDD');
vWork_Time := TO_CHAR(SYSDATE, 'HH24MI');

/* --------------------------------------------------------------------- */
/* 자료 처리 */
/* --------------------------------------------------------------------- */
-- 자료 저장
IF SP_Classify = 1 Then
INSERT INTO S_Bank
(Bank_CD, Bank_Name, isUse, Remark,
Work_Date, Work_Time, Work_User)
VALUES(SP_Bank_CD, SP_Bank_Name, SP_isUse, SP_Remark,
vWork_Date, vWork_Time, SP_Work_User);

vLog_Str := '은행 등록';
SP_RetCode := '1';
SP_RetStr := '정상적으로 저장되었습니다.';
-- 자료 수정
ELSIF SP_Classify = 2 Then
UPDATE S_Bank
SET Bank_Name = SP_Bank_Name,
isUse = SP_isUse,
Remark = SP_Remark,
Work_Date = vWork_Date,
Work_Time = vWork_Time,
Work_User = SP_Work_User
WHERE Bank_CD = SP_Bank_CD;

vLog_Str := '은행 수정';
SP_RetCode := '1';
SP_RetStr := '정상적으로 수정되었습니다.';
-- 자료 삭제
ELSIF SP_Classify = 3 Then
DELETE FROM S_Bank
WHERE Bank_CD = SP_Bank_CD;

vLog_Str := '은행 삭제';
SP_RetCode := '1';
SP_RetStr := '정상적으로 삭제되었습니다.';
ELSE
SP_RetCode := '0';
SP_RetStr := '허용범위의 작업이 아닙니다.';
END IF;

IF SP_RetCode = '1' THEN
vLog_Str := vLog_Str ' - ' SP_Bank_CD ',' SP_Bank_Name;
SM_Log_SP(SP_Work_User, vLog_Str, 'X');
END IF;
COMMIT;
/* ------------------------------------------------------------------------- */
/* 예외처리 */
/* ------------------------------------------------------------------------- */
EXCEPTION
WHEN OTHERS THEN
SP_RetCode := SUBSTR(SQLERRM, 1, 9);
SP_RetStr := SUBSTR(SQLERRM, 12,100);
ROLLBACK;
END;
/