SQL Cursor

1. 문법

Text description of sql_cursor.gif follows

sql_cursor ::=
 SQL % 
 {FOUND | ISOPEN | NOTFOUND | ROWCOUNT | BULK_ROWCOUNT (index)}


2. 의미
가. %BULK_ROWCOUNT : update, delete 등의 실행횟수를 저장
나. %FOUND : INSERT, UPDATE, DELETE, SELECDT INTO 를 통해 1건 이상의 데이터가 영향을 받거나 리턴될 때 TRUE
다. %NOTFOUND : %FOUND 와 반대의 역할
라. %ROWCOUNT : INSERT, UPDATE, DELETE, SELECT INTO 를 통해 영향을 받거나 반환되는 ROW 갯수를 저장
3. 예제

UPDATE emp SET sal = sal * 1.05 WHERE empno = my_empno;
IF SQL%NOTFOUND THEN
   INSERT INTO emp VALUES (my_empno, my_ename, ...);
END IF;


DELETE FROM parts WHERE status = 'OBSOLETE';
IF SQL%ROWCOUNT > 100 THEN  -- more than 100 rows were deleted
   RAISE large_deletion;
END IF;


DECLARE
   TYPE NumList IS TABLE OF NUMBER;
   depts NumList := NumList(10, 20, 50);
BEGIN
   FORALL j IN depts.FIRST..depts.LAST
      UPDATE emp SET sal = sal * 1.10 WHERE deptno = depts(j);
   IF SQL%BULK_ROWCOUNT(3) = 0 THEN
      ...
   END;
END;

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다