본문 바로가기

ORACLE/문제해결

ORA-14551 에러 해결방법

ORA-14551: 질의 안에 DML 작업을 수행할 수 없습니다 
ORA-06512: "SCOTT.FC_UPDATE_SAL", 줄 7에서

 


기본적으로 오라클 함수내에서 DML(Data Manipulation Language - 레코드 제어 명령어)
즉, insert, update, delete 등을 사용할수 없는데

이를 사용하기 위해서는 다음과 같이 해준다.
 
 

------------------------------------------------------
FUNCTION myFunction
    RETURN varchar2
IS
pragma autonomous_transaction;

BEGIN
    INSERT INTO myTable VALUES;

    COMMIT;
    RETURN 'OK';
END;


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


IS아래에 PRAGMA AUTONOMOUS_TRANSACTION; 
문을 통해서 별도의 트랜잭션 처리를 해줘야 한다.



pragma autonomous_transaction
- 자율 트랜잭션

- 부모 트랜잭션의 승인/롤백과 무관하게 현재 객체의 작업을 승앤/롤백 할 수 있다.