반응형



오라클 펑션 내부에서 insert 구문 및 프로시저 구문을 사용할 경우

펑션 오출시 에러를 배출 하는 경우를 쉽게 접하게 된다.

이때에는 펑션 내부에 transaction 로직을 걸어서 사용 하면 된다.

이때 주의 해야 하는 것은 Return 하기 전에 반드시 ROLLBACK 또는 COMMIT 을 해주어야 한다.

실수로 return 전에 rollback 또는 commit 을 하지 않는다면 lock 이 걸리게 되고.. 이후는 설명 하지 않아도 잘 알것이라 믿는다.

펑션 내부에 transation 처리 하기 위해서는 다음 문장을 넣어야 한다.

PRAGMA autonomous_transaction;

이 한줄만 넣으면 되는데 위치는 아래 예를 보면 된다.

CREATE OR REPLACE FUNCTION 펑션이름 (
        .....
        .....
)
RETURN VARCHAR2 IS
       .....
       .....
PRAGMA autonomous_transaction;

BEGIN
       .....
       .....
       COMMIT;
       RETURN ('success');

EXCEPTION
     WHEN OTHERS THEN
          ROLLBACK;
          RETURN('fail');

END;

반응형

'프로그래밍 > Database' 카테고리의 다른 글

[Azure Data Studio] 무료 DB 쿼리 툴 소개합니다.  (2) 2024.07.17
MySQL 에서 rownum 붙이기  (0) 2011.03.15
MySQL 명령어 정리  (0) 2011.03.09

+ Recent posts