아이바티스 에서 xml 에 프로시져를 구현해보았다.
DECLARE
V_CNT NUMBER;
V_KEY_SEQ NUMBER;
BEGIN
SELECT COUNT(*)
INTO V_CNT
FROM PUR_EPUR_KEY_MGT
WHERE KEY = #KEY#||TO_CHAR(SYSDATE,'YYYY');
IF V_CNT = 0 THEN
V_KEY_SEQ := 0;
ELSE
SELECT TO_NUMBER(MAX(KEY_SEQ)+1)
INTO V_KEY_SEQ
FROM PUR_EPUR_KEY_MGT
WHERE KEY = #KEY#||TO_CHAR(SYSDATE,'YYYY');
END IF;
INSERT INTO PUR_EPUR_KEY_MGT(
CONVERSATION_ID
,KEY
,KEY_SEQ
,INS_ID
,INS_DT
,UPT_ID
,UPT_DT
)VALUES(
#KEY#||TO_CHAR(SYSDATE,'YYYY')||LPAD(V_KEY_SEQ,8,'0')||'013'
,#KEY#||TO_CHAR(SYSDATE,'YYYY')
,V_KEY_SEQ
,#INS_ID#
,SYSDATE
,#UPT_ID#
,SYSDATE
);
commit;
END;
로 구했는데 . 첫번째 프로세서 실행시 에는 문제가 없었으나 두번째에서 부터 문제가 발생 했다.
확인해 보니 프로세서상 프로시져를 사용한후 오류가 생겨 트랜잭션이 롤백을 시도 햇는데 procedure 에서 실행한 쿼리 문이 제대로 롤백이 되지 않아
일어 나는 현상 이었다.
따라서 END; 위에 commit 를 추가 하여 문제를 해결했다.
프로세서 완료 후에는 commit 문장을 삭제함 .
아이바티스및 프로세서의 트랜잭션을 전적으로 의지 하면 안된다는 교휵을 배웠다...
'아이바티스' 카테고리의 다른 글
이클립스 XML(아이바티스,마이바티스등..) 자동완성 기능 오류 및 해결 (0) | 2017.04.18 |
---|---|
쿼리딴 공백 개행(엔터) 줄바꿈 제거 + 대문자로 변경 (0) | 2013.08.29 |
아이바티스 동적쿼리 응용 파라미터 응용 하기. (0) | 2013.01.29 |
동적쿼리 (0) | 2012.11.19 |
PROCEDURE MERGE 문사용 법2 (0) | 2012.10.24 |