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
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기