plsql 변수받아서 비교한후 업데이트 0 5 3,861

by 클라나드 [PL/SQL] plsql 커서 [2012.03.30 10:58:24]



안녕하세요 왕초보 개발자입니다.

PL/SQL 질문좀 드릴게요 고수님들도와주세요
ORACLE 11g

TABLE1
NO NAME PHONE
1     김    
2     이
3     강

TABLE2
NO PHONE
1     010
2     011
3     012

TABLE1에 TABLE2에있는 PHONE를 넣고 싶어요
NO를 비교해서 NO같다면 TABLE2에있는 PHONE를 TABLE1에 PHONE에 UPDATE하려면 어떻게 해야할까요?
실제 데이터는 천개정도 됩니다. 사수가 PLSQL 커서사용 해서 해보라는데 도저히 감이 안잡히네요 ㅠㅠ
살려주세요~
by 손님 [2012.03.30 12:30:04]
BEGIN
  FOR l IN (SELECT table1.no AS no, table2.phone AS phone
        FROM table2, table1
        WHERE table1.NO = table2.NO) LOOP
    UPDATE table1
      SET table1.phone = l.phone
     WHERE table1.no = l.no;
  END LOOP;
  
  COMMIT;
END;
/


Oracle 강좌탭에서 PL/SQL강좌 참고하세요~

by 손님 [2012.03.30 12:30:12]
BEGIN
  FOR l IN (SELECT table1.no AS no, table2.phone AS phone
        FROM table2, table1
        WHERE table1.NO = table2.NO) LOOP
    UPDATE table1
      SET table1.phone = l.phone
     WHERE table1.no = l.no;
  END LOOP;
  
  COMMIT;
END;
/


Oracle 강좌탭에서 PL/SQL강좌 참고하세요~

by 마농 [2012.03.30 12:43:27]
별다른 로직이 없이 간단한 조인인 경우 굳이 PL/SQL을 할 필요가 있을런지요?
일단 배우시는 입장이신것 같아 PL/SQL 구문 올립니다.
좌측 메뉴 Oracel 강좌 참고하세요.
-- PL/SQL --
DECLARE
  CURSOR cur1 IS SELECT * FROM table2;
BEGIN
  FOR c1 IN cur1 LOOP
    UPDATE table1
       SET phone = c1.phone
     WHERE no = c1.no
    ;
  END LOOP;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
END;
/

-- One SQL --
UPDATE table1 t1
   SET phone = (SELECT phone FROM table2 t2 WHERE t2.no = t1.no)
;

by 클라나드 [2012.03.30 13:23:41]

손님 두선배님 마농선배님 조언 감사드립니다 달아주신리플보고 열심히 해볼게요!!

by 울보천왕 [2012.11.08 09:36:34]
많이 노력하셔야겟네요.. 안해보고 질문하신거같은데..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입