컴퓨터 공부/Advanced Database

[6월 8일 2교시] PL/SQL 4

려리군 2009. 6. 8. 14:42

Where Current of

for문에 의해 fetch한 그 행을 가져올 때 사용한다.

SELECT FOR UPDATE : RS LOCK, update를 할 경우 lock을 걸어 방해없이 수행할 수 있다.

DML(Insert, Update, Delete, Merge) : RX LOCK


Parameterized Cursor

CURSOR cursor_name(파라미터이름 데이터타입)

행에 대한 열을 선택할 때 유용하다.


Exception

오라클 에러

 - Predefined : 이름이 정해져 있는 에러, 예시 : 1403(No Data Found)

    - 1403(NO_DATA_FOUND), 1422(TOO_MANY_ROWS) : select관련

 - Non-Predefined : 번호만 있고 이름이 정해지지 않은 에러.

선언부에서 exception 선언

PRAGMA EXCEPTION_INIT(exception 이름, 오류번호) 형태로 exception의 이름을 배정한다.

사용자 정의 에러

 - RAISE구문을 통해 명시적으로 올려야 한다.

선언부에서 exception 선언

RAISE 오류이름;

RAISE구문을 만나면 exception handler를 처리한다.


SQLCODE : 오류 코드를 리턴

SQLERRM : 에러 메세지를 리턴

예시) DBMS_OUTPUT.PUT_LINE(SQLCODE||' : '|| SQLERRM);


트리거 : 조건에 맞으면 특정 구문을 수행한다.

실행 시점의 요소 :

   1) event : insert 

                  update

                  delete

    2) timing : before  : validation

                   after  :값에 의한 auditing(감사)

    3) scope : row

                   statement

예시)

create or replace trigger audit_update

after update on emp

for each row

declare

      v_date date := sysdate;

      v_user varchar2(20) := user;

begin 

      insert into aud_upd_emp values

             (:old.empno, :old.sal,:new.sal,v_date,v_user);

end;