프로시저랑 트리거 도와주세요 ㅜ_ㅜ 0 4 1,327

by freesia [PL/SQL] [2013.05.05 18:39:42]



안녕하세요 뒤늦게 DB공부를 하고있는 여학생이에요>_<

oracle sql 공부를 하던중  프로시저랑 트리거는 하나도모르겠더라고요 ㅜㅜ

프로시저는..

emp 테이블을 대상으로 파라미터를 3개 입력받아 첫번째 파라미터는 오퍼레이션
선택으로 1이면 insert 수행, 2이면 update 수행, 3 이면 delete 수행하고,
두번째 파라미터는 empno, 세번째 파라미터는 sal값을 입력 하도록한다.
Insert시에는 empno와 sal 값만 받아서 입력하면되며,
update시는 해당 empno의 sal값을 변경하면되고,
delete시에는 입력받은 empno와 sal값을 가지고 삭제하는 프로시저를 생성하려면 어찌하는건지...

그리고 위에 프로시저를 이용해서

temp_emp테이블을 생성하여 프로시져 수행할때 insert시에는 temp_emp 테이블에
insert, update시에는 update, delete 시에는 delete가 수행되도록 트리거를 생성하라는데..

많이 어렵네요..ㅜㅜ ORACLE 선배님들!! 도와주세요~~_+
by 마농 [2013.05.06 09:14:00]

by freesia [2013.05.06 11:22:15]

감사합니다!!!강좌 잘봤어요 _+
insert,delete,update프로시저는 만들수 있게됬는데
오퍼레이션 선택으로 1이면 insert 수행,
2이면 update 수행, 3 이면 delete 수행하고,
두번째 파라미터는 empno, 세번째 파라미터는 sal값을 입력
하는건 어떻게 하죠..?ㅠㅠ


by 마농 [2013.05.06 13:17:07]
-- 1. 프로시져
CREATE OR REPLACE PROCEDURE p_test
( v_op    NUMBER
, v_empno emp.empno%TYPE
, v_sal   emp.sal%TYPE
)
IS
BEGIN
    IF v_op = 1 THEN
        INSERT INTO emp(empno, sal)
        VALUES(v_empno, v_sal)
        ;
    ELSIF v_op = 2 THEN
        UPDATE emp
           SET sal = v_sal
         WHERE empno = v_empno
        ;
    ELSIF v_op = 3 THEN
        DELETE FROM emp
         WHERE empno = v_empno
        ;
    END IF;
END;
/
-- 2. 트리거
CREATE OR REPLACE TRIGGER t_test
AFTER INSERT OR UPDATE OR DELETE
ON emp
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        INSERT INTO temp_emp(empno, sal)
        VALUES(:NEW.empno, :NEW.sal)
        ;
    ELSIF UPDATING THEN
        UPDATE temp_emp
           SET sal = :NEW.sal
         WHERE empno = :OLD.empno
        ;
    ELSIF DELETING THEN
        DELETE FROM temp_emp
         WHERE empno = :OLD.empno
        ;
    END IF;
END;
/

by freesia [2013.05.06 15:02:34]

아..ㅜㅜ if문을 생각도못했네요..변수값넣는거랑..ㅠㅠ
감사합니다..!!_+

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입