반응형

# 오라클 함수 내부에서 DML 사용.

  • 오라클 함수(Function)에서 DML 사용 불가.

## 오라클 함수에서 DML 사용하기.

  • 오라클 함수에서 완전히 DML문을 사용할수 없는건 아니고, 아래의 옵션을 추가하면 사용 할 수 있다.
PRAGMA AUTONOMOUS_TRANSACTION;
  • 해당 옵션은 자율 트랜잭션 설정 옵션.
  • 아래와 같이 사용 가능하다. (아래 예제 함수의 리턴은 CURSOR)
CREATE OR REPLACE 함수명
(파라미터 값)
RETURN TYPES.CURSORTYPE
AS
	L_CURSOR TYPES.CURSORTYPE;
	변수 지정.
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN

	INSERT문
	COMMIT;

	OPEN L_CURSOR FOR
	SELECT 문
	RETURN L_CURSOR;
	CLOSE L_CURSOR;
END;
/



## COMMIT 미 사용시 발생할수 있는 오류

  • 오라클 함수에서 PRAGMA AUTONOMOUS_TRANSACTION; 추가 후 DML문 적용한 뒤 해당 함수 호출 시 COMMIT 입력이 누락된 경우 아래 오류 발생.
  • ORA-06519 자율적인 트랜잭션 사용이 발견되었고 롤백 되었습니다.
  • 해결방법 : DML 문 사용 후 COMMIT 입력.

 

반응형

+ Recent posts