반응형
# 오라클 함수 내부에서 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 입력.
반응형
'메모장' 카테고리의 다른 글
오라클 오류 ORA-06512, ORA-04088 (0) | 2022.09.15 |
---|---|
오라클 프로시저 실행 (out 존재하는 경우) (0) | 2022.08.25 |
SVN 히스토리 확인방법 (0) | 2022.08.23 |
문자열 길이 체크 로직 (0) | 2022.08.03 |
[오라클] 다른 테이블 참조해서 UPDATE 하기 (0) | 2022.07.27 |