기존에 전체 인원 자료를
교원채용 합격자에 대해 인적마스터(STAF211)로 전환하는것을
전체인원이 아닌 STAF211.DEPT_CD IN (SELECT DEPT_CD FROM V_MEDI_DEPT050)
이러한 조건을 걸어 위조건은 부서가 의학계열인 인원만 나오도록 하는..
걸어서 아래프로시져를 수정해보려고 하는데..
도무지 감이 전혀 오지 않습니다.. 어떤식으로 해야할지 도움좀 부탁드립니다! ㅠㅠ
------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE UDRIMS.SP_STAF130_TRANS_HURT
(
IN_SUPP_NO IN STAF130.SUPP_NO %TYPE,
IN_REG_ID IN VARCHAR2,
IN_REG_IP IN VARCHAR2,
-- RETURN VALUE
OUT_RTN OUT INTEGER,
OUT_STAFF_NO OUT STAF210.STAFF_NO%TYPE,
OUT_MSG OUT VARCHAR2
)
IS
/*******************************************************************************************************
파일명 : SP_STAF130_TRANS_HURT
버전 : <<1.1.1.0>>
최초 작성일 : <<2008.06.30>>
최초 작성자 : 김상봉
내용 : <<교원채용 합격자에 대해 인적마스터(STAF211)로 전환한다. >>
수정 작성일 : <<2008.06.30>>
수정 작성자 : 김상봉
수정내용 :
INPUT :
OUTPUT : OUT_RTN - 리턴 코드 1: Success, -1: Fail, 0: No Data
OUT_MSG - 리턴 메세지
*******************************************************************************************************/
/********** 변수선언시작 ***********************/
-- V_SUPP_NO STAF211.SUPP_NO %TYPE;
V_STAFF211_CNT NUMBER( 5); -- 인적마스터 존재여부
V_STAFF210_CNT NUMBER( 5); -- 인사마스터 존재여부
V_PERS_NO STAF211.PERS_NO %TYPE; -- 개인번호
V_STAFF_NO STAF210.STAFF_NO%TYPE; -- 교직원번호
/********** 변수선언끝 ***********************/
BEGIN
/********** 인적마스터(STAF211) 등록 처리 ***********************/
BEGIN
SELECT COUNT(*)
INTO V_STAFF211_CNT
FROM STAF211
WHERE RES_NO = (
SELECT RES_NO FROM STAF130 WHERE SUPP_NO = IN_SUPP_NO
)
;
END;
IF(V_STAFF211_CNT < 1 ) THEN
BEGIN
SELECT SF_STAF211_NEW_PERS_NO(), SF_STAF210_NEW_STAFF_NO(SF_STAF211_NEW_PERS_NO(), 'FP')
INTO V_PERS_NO, V_STAFF_NO
FROM DUAL;
-- 개인기본(인적마스터)
INSERT INTO STAF211
(
PERS_NO
, KOR_NM
, CHA_NM
, ENG_NM
, RES_NO
, BIRTH_DT
, LUSO_FG
, GEN_FG
, NATV_COUN_CD
, ZIP_NO
, ADDR
, DETA_ADDR
, ENG_ADDR
, RELI_CD
, HOB_NM
, SKIL_NM
, BUD_NM
, PHT_MASTER_NO
, HOME_TEL_NO
, HAND_NO
, EMAIL1
, HGHT
, WGT
, SGHT_LF
, SGHT_RT
, CBLD_FG
, BLDTP
, HINDR_YN
, MIL_UFSD_RESN
, MIL_NO_NM
, MILKD
, MIL
, MILBCH_FG
, DEGR
, ENST_DT
, DCMI_DT
, SPCLEX_FR_DT
, SPCLEX_TO_DT
, VA_FG
, REG_ID
, REG_DTTM
, REG_IP
)
SELECT
V_PERS_NO
, KOR_NM
, CHA_NM
, ENG_NM
, RES_NO
, BIRTH_DT
, LUSO_FG
, GEN_FG
, NATI_CD
, ZIP_NO
, ADDR
, DETA_ADDR
, FRN_ADDR
, RELI_CD
, HOB
, SKIL
, BUD_NM
, PHT_MASTER_NO
, HOME_TEL_NO
, HAND_NO
, EMAIL
, HGHT
, WGT
, SGHT_LF
, SGHT_RT
, CBLD_FG
, BLDTP
, HIND_YN
, MIL_UFSD_RESN
, MIL_NO_NM
, MILKD
, MIL
, MILBCH_FG
, DEGR
, ENST_DT
, DCMI_DT
, SPCLEX_FR_DT
, SPCLEX_TO_DT
, VA_FG
, IN_REG_ID
, SYSDATE
, IN_REG_IP
FROM STAF130
WHERE SUPP_NO = IN_SUPP_NO
;
/********* 에러처리 ROLLBACK *********************/
EXCEPTION
WHEN OTHERS THEN
OUT_RTN := -1;
OUT_MSG := TO_CHAR(SQLCODE)|| ' : ' || SQLERRM;
RETURN;
END ;
ELSE --IF ( V_STAFF211_CNT = 1 ) THEN
BEGIN
--과거데이터중 개인마스터가 2건인 사람이 존재->개인번호가 최신인 자료를 기준으로 한다.
SELECT /*+ INDEX_DESC (STAF211 PK_STAF211) */
PERS_NO, SF_STAF210_NEW_STAFF_NO(PERS_NO, 'FP')
INTO V_PERS_NO, V_STAFF_NO
FROM STAF211
WHERE RES_NO = (
SELECT RES_NO FROM STAF130 WHERE SUPP_NO = IN_SUPP_NO
)
AND ROWNUM = 1
;
--DBMS_OUTPUT.PUT_LINE(V_PERS_NO);
--DBMS_OUTPUT.PUT_LINE(V_STAFF_NO);
-- 개인기본(인적마스터) 정보를 업데이트 한다.
UPDATE STAF211
SET (CHA_NM
, ENG_NM
, GEN_FG
, NATV_COUN_CD
, ZIP_NO
, ADDR
, DETA_ADDR
, ENG_ADDR
, RELI_CD
, HOB_NM
, SKIL_NM
, BUD_NM
, PHT_MASTER_NO
, HOME_TEL_NO
, HAND_NO
, EMAIL1
, HGHT
, WGT
, SGHT_LF
, SGHT_RT
, CBLD_FG
, BLDTP
, HINDR_YN
, MIL_UFSD_RESN
, MIL_NO_NM
, MILKD
, MIL
, MILBCH_FG
, DEGR
, ENST_DT
, DCMI_DT
, SPCLEX_FR_DT
, SPCLEX_TO_DT
, VA_FG
, MOD_ID
, MOD_DTTM
, MOD_IP ) =
( SELECT CHA_NM
, ENG_NM
, GEN_FG
, NATI_CD
, ZIP_NO
, ADDR
, DETA_ADDR
, FRN_ADDR
, RELI_CD
, HOB
, SKIL
, BUD_NM
, PHT_MASTER_NO
, HOME_TEL_NO
, HAND_NO
, EMAIL
, HGHT
, WGT
, SGHT_LF
, SGHT_RT
, CBLD_FG
, BLDTP
, HIND_YN
, MIL_UFSD_RESN
, MIL_NO_NM
, MILKD
, MIL
, MILBCH_FG
, DEGR
, ENST_DT
, DCMI_DT
, SPCLEX_FR_DT
, SPCLEX_TO_DT
, VA_FG
, IN_REG_ID
, SYSDATE
, IN_REG_IP
FROM STAF130
WHERE SUPP_NO = IN_SUPP_NO )
WHERE PERS_NO = V_PERS_NO
;
/*기존 자료는 삭제하고 채용에 있는 자료를 최신으로 다시 인서트한다. */
-- 학력사항
DELETE FROM STAF220