반응형

문제상황)

부득이 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

+ Recent posts