set serveroutput on;    //테스트시 output 결과 보기위해 해준다

DECLARE
  CD_ID VARCHAR2(200);
  CD VARCHAR2(200);
  v_Return VARCHAR2(200);
BEGIN
   CD_ID := '';
   CD := '';

   //쿼리

  v_Return := ''
  DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
END;



----------------------------------------------------------------

FOR UPDATE


다른 DBA관리자가 위 테이블을 조작하게 되여서 앞에서 처럼 동시접근으로 인한 문제가 생길수 있으므로

LOCK 을 고려해보면 다음과 같이 코딩하면된다.

 

  CREATE OR REPLACE PROCEDURE PCD_CUMMUPDATE

 IS

    CURSOR CUR_SAWON10

    IS

    SELECT SANO, COMM

    FROM TBL_MEMBER

    WHERE DEPTNO=10

    FOR UPDATE

 

BEGIN

          FOR i IN CURSAWON10 LOOP

          UPDATE TBL_MEMBER SET SAL=SAL+300

          WHERE SANO=i.SANO

 

END;

 

역시 일반쿼리문과 별다른것은 없다. 다수의 행을 처리해야하므로 커서를쓰고 커서 정의구문에 FOR UPDATE 구문을 사용했다.

 

'DataBase > PLSql' 카테고리의 다른 글

[PL/Sql] PL/Sql 연산자  (0) 2012.08.13
[PL/Sql] PL/Sql 블럭구조  (0) 2012.08.13
[PL/Sql] PL/Sql 데이터형  (0) 2012.08.13
[PL/Sql] PL/Sql 개념과예제  (0) 2012.08.13
[PL/Sql] 강좌  (0) 2010.10.29

+ Recent posts