반응형
문제상황)
부득이 SELECT, INSERT, UPDATE를 전부해야될 때 cursor와 반복을 활용하였다.
DECLARE
V_ID NUMBER; --id 담을 변수
V_GROUP_ID NUMBER; --group_id 담을 변수
CURSOR V_CURSOR --CURSOR 정의
IS
SELECT *
FROM TABLE_1
WHERE ID=XXX;
BEGIN
FOR v_list IN V_CURSOR LOOP --반복문 시작, 이때 v_list 는 별도 선언없이 바로 사용.
--1. SEQ SELECT --특정 key 로 select 한 seq를 V_ID, V_GROUP_ID 에 삽입
SELECT seq INTO V_ID FROM TABLE_2 WHERE key='XXX';
SELECT seq INTO V_GROUP_ID FROM TABLE_3 WHERE key ='XXX';
--2. SEQ INSERT -- 위에서 정보가 삽입된 변수를 활용하여 insert
INSERT INTO TABLE4 (ID, GROUP_ID)
VALUES (V_ID, V_GROUP_ID);
--3. OP_POINT UPDATE
UPDATE TABLE_5
SET seq = XX
WHERE ID = v_list.ID --CURSOR로 가져온 행이 들어가있는 v_list를 활용함
AND TYPE = v_list.TYPE --v_list.컬럼명 으로 호출가능
AND NAME = v_list.NAME;
END LOOP;
COMMIT;
END;
간단하게 FOR IN 형식의 반복문을 사용하였다.
DECLARE 에 CURSOR를 선언해주고 BEGIN 안쪽에서 FOR-IN 돌려서 활용하면 끝.
728x90
'과거 게시글' 카테고리의 다른 글
인텔리제이 2021 gradle 디버그 안될 때 (intellij gradle debug) (0) | 2021.05.14 |
---|---|
intellij 인텔리제이 한글 인코딩 설정 (intelliJ utf-8) (0) | 2021.04.02 |
Tortoise SVN에 로컬 프로젝트 업로드하기 (0) | 2019.11.25 |
[requireJs] 자식js에서 부모js 부르기 (0) | 2019.09.06 |
웹 애플리케이션 배포 (인텔리제이로 war 만들기, 아파치 톰캣에 배포) (0) | 2019.08.22 |