본문 바로가기
[WEB] Back-End Framework & Library/MyBatis

마이바티스에서 프로시저를 호출하는 방법

by 연구자 공학코드 2022. 11. 8.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

본 글에서는 티베로(오라클)의 데이터베이스를 사용하는 마이바티스 프로젝트에서 프로시저를 호출하는 것과 프로시저에 값을 전달하고 받는 방법을 소스 코드와 함께 설명한다.

프로시저 작성 예제

아래의 SQL(Structured Query Language)처럼 프로시저를 작성한다.

CREATE OR REPLACE PROCEDURE EXAMPLE_PROCEDURE(
	IN_DATA IN VARCHAR2,
	OUT_ERROR_CODE OUT NUMBER,
	OUT_ERROR_MESSAGE OUT VARCHAR2
)
IS
BEGIN
	INSERT INTO EXAMPLE_TABLE(COLUMN) VALUES(IN_DATA);
	
	OUT_ERROR_CODE := 0;
	OUT_ERROR_MESSAGE := '성공';
    
	EXCEPTION
	WHEN NO_DATA_FOUND THEN
    	NULL;
	WHEN OTHERS THEN
    	ROLLBACK;
		OUT_ERROR_CODE := -1;
		OUT_ERROR_MESSAGE := '실패';

END EXAMPLE_PROCEDURE;

프로시저 예시

 

프로시저 호출 예제

마이바티스 매퍼에 아래처럼 프로시저를 호출하는 명령어를 입력한다. 프로시저에 값을 전달하고 받는 방법은 여러가지가 있지만 경험상 HashMap을 활용하는 것이 가장 간편하다.

<select id="example_call_proc" statementType="CALLABLE" parameterType="hashMap">
    {call EXAMPLE_PROCEDURE(
            #{IN_DATA, mode=IN, jdbcType=VARCHAR},
            #{OUT_ERROR_CODE, mode=OUT, jdbcType=DECIMAL, javaType=long},
            #{OUT_ERROR_MESSAGE, mode=OUT, jdbcType=VARCHAR, javaType=java.lang.String}
        )
    }
</select>

프로시저 호출 예제

자바에서 프로시저를 호출하는 예제

데이터베이스에 프로시저를 작성하고 프로시저를 호출하는 쿼리를 마이바티스 매퍼에 작성하였으면 이제 자바에서 프로시저를 호출할 수 있다. 아래와 같은 자바 코드로 실행이 가능하다.

Map param = new HashMap<>();
param.put("IN_DATA", "값"); // 입력
param.put("OUT_ERROR_NUMBER", -1); // 출력
param.put("OUT_ERROR_MESSAGE", "오류"); // 출력

sqlSession.selectOne("example_call_proc", param); // 프로시저 호출

728x90
반응형

댓글