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;
'컴퓨터 공부 > Advanced Database' 카테고리의 다른 글
[6월 8일 1교시] PL/SQL 3 (0) | 2009.06.08 |
---|---|
[6월 5일 6교시] PL/SQL 2 (0) | 2009.06.05 |
[6월 5일 5교시] PL/SQL 1 (0) | 2009.06.05 |
[6월 5일 4교시] 데이터 제어 2 (0) | 2009.06.05 |
[6월 5일 3교시] 여러 종류의 DB 객체 3 + 데이터 제어 1 (0) | 2009.06.05 |