nickjoIT

CURSOR UPDATE 본문

DB/oracle

CURSOR UPDATE

nickjo 2017. 5. 26. 17:54

DECLARE

  --조회 대상 데이타에 대한 락을 점유하며 커서 오픈

  CURSOR c IS SELECT * FROM emp FOR UPDATE;

  

  --락이 걸린 데이터에 대한 커서 오픈 요청 시 바로 에러 출력

  --CURSOR c IS SELECT * FROM emp FOR UPDATE NOWAIT;

  

  --락이 걸린 데이터에 대한 커서 오픈 요청 시 3초 후에도 락 대기 시 에러 출력

  --CURSOR c IS SELECT * FROM emp FOR UPDATE WAIT 3;

BEGIN

  --CURRENT OF를 이용하여 커서에 읽어들인 로우의 rowid를 활용하여 성능 개선

  --기본 키 인덱스를 이용하는 것보다도 성능이 우월함

  FOR rec IN c LOOP

    UPDATE emp

       SET sal=sal+0

     WHERE CURRENT OF c;

  END LOOP;

  

  COMMIT;

END;

/

'DB > oracle' 카테고리의 다른 글

centos7 oracle 11g r2 설치  (0) 2018.09.12
분석함수의 성능개선 그 결과는  (0) 2017.12.06
CURSOR FOR LOOP  (0) 2017.05.26
CURSOR LOOP  (0) 2017.05.26
단 한건만 반화하는 명시적 커서의 예  (0) 2017.05.26
Comments