Oracle

[오라클SQL과PLSQL을다루는기술]11. 커서, 레코드, 컬렉션

지금이니! 2020. 7. 18. 15:51

# 커서

: 특정 SQL 문장을 처리한 결과를 담고 있는 영역(PRIVATE SQL이라는 메모리 영역)을 가리키는 일종의 포인터

 

 - 묵시적 커서: PL/SQL 블록에서 실행하는 SQL 문장(DML, SELECT INTO) 실행될 때마다 자동으로 만들어지는 커서

 - 명시적 커서: 사용자가 직접 정의해서 사용

 

묵시적 커서 속성

 - SQL%FOUND: 결과 집합의 패치 로우 수가 1개 이상이면 TRUE, 아니면 FALSE

 - SQL%NOTFOUND: 로우 수가 0이면 TRUE, 아니면 FALSE

 - SQL%ROWCOUNT: 영향 받은 결과 집합의 로우 수 반환, 없으면 0

 

명시적 커서

 1) 커서 선언

 CURSOR 커서명[(매개변수1, 매개변수2, ...)]

 IS

 SELECT 문장;

 

 2) 커서 열기

 OPEN 커서명 [(매개변수1, 매개변수2, ...)]

 

 3) 패치 단계에서 커서 사용

 LOOP

   FETCH 커서명 INTO 변수1, 변수2,...;

   EXIT WHEN 커서명%NOTFOUND;

 END LOOP;

 

 4) 커서 닫기

 CLOSE 커서명;

 

* 커서변수

* 커서표현식

 

# 레코드

 - 사용자 정의형 레코드

 - 테이블형 레코드

  • 변수명 테이블명.컬럼명%TYPE
  • 레코드변수명 테이블명%ROWTYPE

 - 커서형 레코드

  • 커서명%ROWTYPE

 * 중첩 레코드

 

# 컬렉션