WHERE CURRENT OF
ROWID를 이용하지 않고도 현재 참조하는 행을 갱신하고 삭제할 수 있게 한다.
추가적으로 FETCH문에 의해 가장 최근에 처리된 행을 참조하기 위해서 “WHERE CURRENT OF 커서이름 ” 절로 DELETE나 UPDATE문 작성이 가능하다.
이 절을 사용할 때 참조하는 커서가 있어야 하며, FOR UPDATE절이 커서 선언 query문장 안에 있어야 한다. 그렇지 않으면 에러가 발생한다.
WHERE CURRENT OF 예제
-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용 SQL> SET SERVEROUTPUT ON; SQL> CREATE OR REPLACE PROCEDURE where_current IS CURSOR emp_list IS SELECT empno FROM emp WHERE empno = 7934 FOR UPDATE; BEGIN --DBMS_OUTPUT.PUT_LINE명령을 사용하기 위해서 DBMS_OUTPUT.ENABLE; FOR emplst IN emp_list LOOP --emp_list커서에 해당하는 사람의 직업을 SALESMAN으로 업데이트 시킵니다. UPDATE emp SET job = 'SALESMAN' WHERE CURRENT OF emp_list; DBMS_OUTPUT.PUT_LINE('수정 성공'); END LOOP; EXCEPTION WHEN OTHERS THEN -- 에러 발생시 에러 메시지 출력 DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM); END; / --먼저 데이터를 확인해 보자 SQL> SELECT job FROM emp WHERE empno = 7934; JOB --------- CLERK --PLSQL을 실행시키고.. SQL> EXECUTE where_current; 수정 성공 -- 데이터를 확인하면 변경된 것을 확인 할 수 있다. SQL> SELECT job FROM emp WHERE empno = 7934; JOB --------- SALESMAN