LOOP문을 돌렸는데, INSERT 시 같은게 2번 들어갑니다. 0 2 1,317

by 최사원 [PL/SQL] [2017.08.03 00:02:42]


프로시져를 이용해서 사원의 전화번호가 2개 발생하면 SAWON_TEL_SUB 테이블에 2개를 넣어야 하는데,

02-111-1111 이 2번, 02-222-2222 1번으로 3개가 들어갑니다. 

어떻게 해야 02-111-1111, 02-222-2222 2개만 들어갈 수 있나요?

 

CREATE OR REPLACE PROCEDURE SP_SAWON_TEL
(
    I_SABUN
)
IS
     S_NAME   VARCHAR(100);
     S_TEL_NO VARCHAR(100);

     CURSOR SAWON_TEL_NO
     IS 
     SELECT TEL_NO FROM SAWON_TEL WHERE SABUN = I_SABUN  --> 여기서 전화번호가 2개 나옵니다.  예를 들어, 02-111-1111, 02-222-2222
BEGIN 
     
    OPEN SAWON_TEL_NO;
    LOOP
        FETCH SAWON_TEL_NO INTO S_TEL_NO;
             INSERT INTO SAWON_TEL_SUB(NAME,TELNO,REG_DATE) VALUES (S_NAME,S_TEL_NO,SYSDATE);
             COMMIT;
         EXIT WHEN SAWON_TEL_NO%NOTFOUND;
    END LOOP;
    CLOSE SAWON_TEL_NO;
END;
 

by 마농 [2017.08.03 07:24:58]

Exit 구문의 위치가 Fetch 바로 다음에 와야 할 듯.


by jkson [2017.08.03 08:00:34]

만드신 그대로 본문에 적으신 거라면

02-111-1111, 02-222-2222 순서대로 loop를 돌고 나면

02-111-1111이 1번,

02-222-2222가 2번 insert됩니다.(원인은 마농님이 적으셨구요)

1111이 2번, 2222가 3번이 입력된 게 맞다면

로직을 그대로 적으신 게 아니거나 착각하신 것 같네요.

난독일세... 총 3개가 들어간다는 말씀이셨구나.. -_-;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입