메모장
오라클 함수 내부에서 DML 사용
현호s
2022. 8. 23. 15:53
반응형
# 오라클 함수 내부에서 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 입력.
반응형