안녕 하세요? 함수 내에서 UPDATE문 사용 질문 드립니다.
함수 내에서 일반적인 형태로는 오류가 발생하는데
맞는 것인지 궁금합니다.
그래서 이것을 해결 할려면 아래와 같은 옵션을 사용해야 하는것 같은데 답변 부탁 드립니다.
감사합니다.
옵션 내용: PRAGMA AUTONOMOUS_TRANSACTION;
에러 메시지: cannot perform a DML operation inside a query
(에러 내용은 update문을 사용 못하는것 같음)
/*
* 테스트 테이블 생성 및 데이터 입력
*/
CREATE TABLE TBL_USER(
USER_SEQ NUMBER,
USER_NAME VARCHAR2(50),
CONSTRAINT PK_TBL_USER PRIMARY KEY(USER_SEQ)
)
/
INSERT INTO TBL_USER(USER_SEQ, USER_NAME)
VALUES(1, '홍길동')
/
INSERT INTO TBL_USER(USER_SEQ, USER_NAME)
VALUES(2, '이순신')
/
/*
* 함수 생성
*/
CREATE OR REPLACE FUNCTION GET_ROWCNT(L_USER_SEQ NUMBER, L_USER_NAME VARCHAR2) RETURN NUMBER
AS
PRAGMA AUTONOMOUS_TRANSACTION;
L_CNT NUMBER;
BEGIN
--DBMS_OUTPUT.PUT_LINE('SEQ_NEXTVAL.L_GUBUN==>'||L_GUBUN);
--
UPDATE TBL_USER
SET USER_NAME = L_USER_NAME
WHERE USER_SEQ = L_USER_SEQ;
--
L_CNT := SQL%ROWCOUNT;
COMMIT;
RETURN L_CNT;
END;
/*
* 함수 확인
*/
SELECT GET_ROWCNT(1, '박문수') FROM DUAL