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
반응형
'[WEB] Back-End Framework & Library > MyBatis' 카테고리의 다른 글
[마이바티스] 변수를 정규식으로 한 번에 바꾸기 (0) | 2023.03.03 |
---|---|
[Spring/MyBatis] Null 값 허용하기 (0) | 2022.08.22 |
댓글