Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-member domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /ledcorps/www/wp/wp-includes/functions.php on line 6114 6.2.5 The WHERE CURRENT OF Clause – 대나무숲

6.2.5 The WHERE CURRENT OF Clause

출처 http://www.gurubee.net/lecture/1068

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
    

답글 남기기 0

Your email address will not be published. Required fields are marked *