1. 문법
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;
최신 댓글