1. 커서의 내용을 미리 정의 해 놓고 사용하는 방법.
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 전에 정의하기 때문이다.
2. 커서 변수를 미리 만들어 놓고 불러서 사용하는 방법.
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;
재사용성이 있어서 나름 괜찮음.
커서를 정의 한 뒤 그 때 그 때 커서의 내용을 채우는 방법이다.
3. 동적으로 커서를 생성해서 사용하는 방법
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;
강추~!!
커서를 미리 정의 할 필요도 없고, 변수를 미리 만들어 놓을 필요도 없다.
'Database > Oracle' 카테고리의 다른 글
한국어 문서 목록 - Oracle Database [ID 1535149.1] (0) | 2017.06.26 |
---|---|
프로시저(Procedure) 실행하기 (0) | 2017.05.25 |
보안관련 유틸리티 (0) | 2011.10.28 |
데이터베이스 감시 보안 기능 (0) | 2011.10.28 |
사용자 암호 정책과 암호 검증 기능 (0) | 2011.10.28 |