본문 바로가기
SQL/오라클(Oracle)

오라클 프로시저 커서 (CURSOR) 3가지 생성 방법.

by SSaMKJ 2013. 4. 3.

커서의 내용을 미리 정의 해 놓고 사용하는 방법.

 

DECLARE   CURSOR C_LIST IS     SELECT MY_ID FROM MY_TABLE WHERE 조건; 
	BEGIN    
		FOR I_ID IN C_LIST LOOP     DBMS_OUTPUT.put_line(I_ID);   
	END LOOP; 
END;

비추천 

커서의 내용을 정할 때 select 문제 동적으로 parameter가 넘어가야 할 경우 사용이 불가능 하다. 왜냐하면 BEGIN 전에 정의하기 때문이다.

 

커서 변수를 미리 만들어 놓고 불러서 사용하는 방법.
 
DECLARE 	I_ID   VARCHAR2(100);		-- 변수 정의				   
	C_LIST SYS_REFCURSOR;		-- 커서 정의 
    BEGIN   OPEN C_LIST FOR   SELECT MY_ID        FROM MY_TABLE     WHERE 조건;   
    LOOP					-- LOOP 돌기.       
    	FETCH C_LIST       INTO  I_ID;			--  하나씩 변수에 넣기.       
        EXIT WHEN C_LIST%NOTFOUND;	-- 더이상 없으면 끝내기.       
        DBMS_OUTPUT.put_line(I_ID);    --  출력   
	END LOOP;   
CLOSE C_LIST; END;
재사용성이 있어서 나름 괜찮음. 
 
커서를 정의 한 뒤 그 때 그 때 커서의 내용을 채우는 방법이다.
 
 
 
 


동적으로 커서를 생성해서 사용하는 방법
 
강추~!!

 

DECLARE  BEGIN    FOR C_LIST IN (SELECT MY_ID FROM MY_TABLE WHERE 조건)   
LOOP     DBMS_OUTPUT.put_line(C_LIST.I_ID);   
END LOOP; END;

커서를 미리 정의 할 필요도 없고, 변수를 미리 만들어 놓을 필요도 없다.

 

 

 

댓글