환급 DB JOB 에 대해 조언 구합니다... 0 2 3,603

by 콩이 [어플리케이션관련] 백업 JOB 스케쥴 프로시저 [2013.01.23 11:11:44]


안녕하세요.. DB를 JOB을 이용하여 자동으로 처리하는 걸 만들고 싶은데요.. 고수님들의 도움을 구하고자 합니다.

우선 T_MAIN이란 테이블이 있습니다. 
KIND CHAR(1) //구분 0:회원 1:기업
TOT_CNT NUMBER //총발송
SUCC_CNT NUMBER //성공
FAIL_CNT NUMBER //실패
SEND_DATE VARCHAR(14) //보낸날짜 yyyyMMddHHmmss형식
REFUND_YN CHAR(1) //환급 여부 0:미환급 1:환급완료
위와 같은 필드를 가지고 있습니다.

제가하고자 하는건 저 내역을 가지고 환급을 해주는 DB 잡을 하고 싶습니다.
우선 KIND가 0인 회원의 경우는  SEND_DATE 기준으로 24시간이 지나면 환급을 해줄 수 있습니다.
KIND가 1인 기업의 경우는 SEND_DATE 기준으로 48시간이 지나면 환급을 해줄 수 있습니다.

그래서 제 생각에는 REFUND_YN이 0인걸 가져와야 하고.. KIND 기준으로 24시간 또는 48시간이 지난 데이터를
가져와야 한다고 생각합니다. 그리고 환급을 완료하면 REFUND_YN 을 1로 업데이트 해야한다고 생각합니다.

KIND가 0인 회원의 경우 20원 KIND가 1인 기업의 경우 30원을 환급하면 됩니다.
그러니까 FAIL_CNT 즉 실패 만큼 20 또는 30을 곱해서 환급해주어야 합니다.

회원테이블 T_MEMBER에는 CASH라는 VARCHAR(12) 필드가 있습니다.
여기에 실패만큼 환급을 해주고 싶습니다.


어떻게 프로그래밍 해야 할까요?? DB잡에다..
고수님들의 도움을 구해봅니다. ㅜㅜ
by 부쉬맨 [2013.01.23 12:44:31]
BEGIN -- 기업 0
 IF KIND = 0 THEN
  vMoney := 20;
 
 -- 대상자료들 추출
 SELECT * 
 FROM 테이블
  WHERE SYSDATE -1
  
 IF REFUND_YN = 0 THEN -- 미환급
  어떠한 작업 
 ELSIF REFUND_YN = 1 THEN -- 환급
  어떠한 작업
  
 EXCEPTION
  UPDATE T_MEMBER
  SET CASH = vMoney  
 END; 
 
BEGIN -- 기업 1
IF KIND = 1 THEN
 vMoney := 30;

 SELECT * 
 FROM 테이블
  WHERE SYSDATE -2 
   END;
EXCEPTION
  UPDATE T_MEMBER
  SET CASH = vMoney      
 END;

기본적인 로직은저렇게할거같은데..
업무적인 로직이 존재하므로 옆에있는 분한테 물어보시는게 빠를텐데
일단 기본적으로 plsql 작성방법을 알고 물어보세요

by 콩이 [2013.01.23 14:43:36]
예^^ 감사합니다. PL/SQL은 계속 공부하고 있어서 어느정도는 볼 수 있습니다. 감사해요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입