개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

- CURSOR FOR LOOP

 

CURSOR FOR LOOP는 Explicit CURSOR안에 있는 모든 Row들을 처리합니다. 따라서 CURSOR의 FETCH문에서 모든 데이터를 다 처리하기 위해 %NOTFOUND속성을 이용해야 하는 경우에 사용하면 유용합니다. 이 CURSOR는 내부적으로 OPEN되고, FETCH되고 나서 CLOSE되기 때문에 DECLARE절에서 선언만 하고 사용하면 됩니다. CURSOR의 데이터를 읽어 올 변수를 선언할 필요가 없습니다.

 

 

 

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

- Explicit CURSOR의 Attribute

Implicit CURSOR 사용할 때와 마찬가지로 Explicit CURSOR에 대한 상태 정보를 구하는 4가지 Attribute가 있습니다. CURSOR명 뒤에 Attribute를 붙여서 씁니다

 

 

[예제13]  S_ITEM 테이블에서 주문번호를 입력받아 각 상품에 해당하는 주문액과 총금액을 출력하시오

 

 

 

 

 

 

 

 

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

[예제12] 주문번호를 입력받아 S_ITEM 테이블에서 해당되는 주문내역을 삭제하시오. 그리고 그 삭제결과에 따라 Message를 출력하면 다음과 같습니다.

2. OPEN 단계

OPEN cursor명; 

OPEN문은 참조되는 변수를 연결하고, SELECT문을 실행합니다. SELECT로 검색된 Row들을 Active Set이라고 부르며, FETCH 단계에서 사용할 수 있게 됩니다. CURSOR는 Active Set을 생성한 다음, 첫번째 Row에 Pointer를 위치시켜 가리키게 됩니다. CURSOR를 OPEN할 때 검색된 Row가 없어도 에러를 발생하지 않습니다. FETCH를 한 후에 CURSOR의 Attribute를 살펴서 알아볼 수 있습니다.

 

3. FETCH 단계

FETCH cursor명 INTO 변수1, 변수2,...; 

FETCH문은 CURSOR로부터 Pointer가 존재하는 Record의 값을 변수에 전달해 줍니다. 그리고, Pointer는 Active Set의 다음 Record로 이동합니다. CURSOR를 선언할 때 사용된 SELECT문장의 컬럼과 같은 개수, 같은 데이터 타입의 변수를 FETCH문의 INTO절에 기술합니다. FETCH문에서는 FETCH될 Record가 없는 경우에도 에러를 발생하지 않으므로 Record를 포함하고 있는지를 확인합니다.


4. CLOSE 단

 CLOSE cursor명; 

CLOSE문은 Record의 Active Set을 닫아 주고, 다시 새로운 Active Set을 만들어 OPEN할 수 있게 해줍니다.

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

- CURSOR란
Oracle Server는 SQL문을 실행하고 처리한 정보를 저장하기 위해 "Private SQL Area" 이라고 하는 작업영역을 이용합니다.

 

 

이 영역에 이름을 부여하고 저장된 정보를 처리할 수 있게 해주는데 이를 CURSOR라 합니다. CURSOR는 DML문과 SELECT문에 의해 내부적으로 선언되는 Implicit(묵시적인) CURSOR와 사용자가 선언하고 이름을 정의해서 사용되는 Explicit(명시적인) CURSOR가 있습니다. PL/SQL에서 SELECT문은 한 개의 Row만을 검색할 수 있기 때문에 하나 이상의 Row를 검색하기 위해서는 Explicit CURSOR를 사용하여야 합니다.

 

 

 CURSOR란
Implicit CURSOR의 경우는 PL/SQL Block의 BEGIN Section에 SQL문이 있으면 PL/SQL은 SQL 이라는 이름으로 Implicit CURSOR를 만들게 되는데 PL/SQL은 이 CURSOR를 자동으로 관리하며 가장 최근의 Implicit CURSOR의 결과를 알려주기 위하여 몇 가지 Attribute를 제공합니다.
PL/SQL문에서 이 Attribute를 Function처럼 사용할 수 있지만, SQL문에서는 사용할 수 없습니다. 이 Attribute는 DML문의 수행결과를 알아보는데 유용합니다  

 

+ Recent posts