2020년 7월 19일 일요일

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

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

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=574

5.2 묵시적 커서(Implicit Cursor)

n PL/SQL 내부에서 한건의 데이터만 SELECT되는 DML이 있다면 오라클이 자동으로 SQL이라는 이름의 묵시적 커서를 선언하여 사용하고 닫아 버린다.

n INSERT, UPDATE, DELETE가 실행될 때도 묵시적 커서가 생성되는데 INSERT인 경우 커서는 INSERT되는 데이터를 가리키며 UPDATE, DELETE가 실행되는 경우 커서는 DML에 의해 영향을 받는 레코드를 가리킨다.

n 가장 최근에 만들어진 묵시적 커서에 대한 속성을 제공한다.

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 updated ');

END IF;

commit; --커밋해버리면 커서의 속성을 알수 없으니 뒤쪽에서 Commit

END;

/

3 emps updated

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

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

ENAME SAL

---------- ----------

CLARK 2573

KING 5250

MILLER 1365

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...