2016년 7월 28일 목요일

[IT실무고급교육★탑크리에듀]오라클 묵시적 커서(IMPLICIT CURSOR)


오라클 묵시적 커서(IMPLICIT CURSOR) 

 SQL문이 실행 될 때 오라클 서버에 의해 자동으로 생성되는 커서로 자동으로 Closing 된다. 
 INSERT, UPDATE, DELETE가 실행될 때도 묵시적 커서가 생성되는데 INSERT인 경우 커서는 INSERT되는 데이터를 가리키며 UPDATE, DELETE가 실행되는 경우 커서는 DML에 의해 영향을 받는 레코드를 가리킨다. 
 가장 최근에 만들어진 묵시적 커서에 대한 속성을 제공한다. 

Attribute Description 
%FOUND SELECT, INSERT, UPDATE, DELETE에 의해 영향을 받은 레코드가 한건 이상이면 TRUE, 아니면 FALSE를 리턴. 
%NOTFOUND %FOUND의 반대, SELECT, INSERT, UPDATE, DELETE에 의해 영향을 받은 레코드가 한건도 없으면 TRUE, 아니면 FALSE를 리턴. 
%ISOPEN 항상 FALSE, 묵시적 커서는 오라클 서버가 항상 사용 후 Closing. 
%ROWCOUNT SELECT, INSERT, UPDATE, DELETE에 의해 영향을 받은 레코드 건수를 리턴. 

SQL> select ename, sal from emp where deptno = 10; 

ENAME            SAL 
---------- ---------- 
CLARK            2450 
KING            5000 
MILLER          1300 

-- EMP 테이블에서 10번 부서 사원들의 급여를 5% 인상 하시오. 
SQL> SET SERVEROUTPUT ON 
SQL> DECLARE 
  total_rows number(2); 
BEGIN 
  UPDATE emp 
  SET sal = sal + round(sal * 5 / 100) 
  WHERE deptno = 10; 
  
  IF sql%notfound THEN 
      dbms_output.put_line('no emp selected'); 
  ELSIF sql%found THEN 
      total_rows := sql%rowcount; 
      dbms_output.put_line( total_rows || ' emps selected '); 
  END IF; 
  
  commit;  --커밋해버리면 커서의 속성을 알수 없으니 뒤쪽에서 Commit 
END; 

3 emps selected 

PL/SQL 처리가 정상적으로 완료되었습니다. 

SQL> select ename, sal from emp where deptno = 10; 

ENAME            SAL 
---------- ---------- 
CLARK            2573 
KING            5250 
MILLER          1365

댓글 없음:

댓글 쓰기