티스토리 뷰




오라클에서는 프로시저 내부에서 NUMBER 를 BIGDECIMAL 로 변환해서 사용한다고 한다.




그래서 iBatis 에서 선언 시



IN 변수는 number


OUT 변수는 decimal 



로 설정해줘야 한다.

 

 

 


-- Controller


HashMap requestMap = new HashMap();
requestMap.put("REQUEST_PARAM_STR", "AA");
requestMap.put("REQUSET_PARAM_NUM", 100);

service.callProceduer(requestMap);

String resultCode = requestMap.get("RESULT_CODE");
String resultMsg = requestmap.get("RESULT_MSG");

System.out.println(resultCode);
System.out.println(resultMsg);


-- Service
public HashMap callProceduer(Map requestMap) throws ServiceException {
try {
return dao.callProceduer(requestMap);
} catch (Exception e) {
// throw Exception('error');
}
}



-- Dao
public HashMap callProceduer(Map requestMap) throws DaoException {
return (HashMap) queryForObject("callProceduer", requestMap); 
}



-- iBatis
<parameterMap id="proceduerResultMap" class="java.util.Map">
<parameter property="REQUEST_PARAM_STR"  javaType="java.lang.String"  jdbcType="VARCHAR"  mode="IN" />
<parameter property="REQUSET_PARAM_NUM"  javaType="java.lang.Integer"  jdbcType="NUMBER mode="IN" />
<parameter property="RESULT_CODE"  javaType="java.lang.Integer"  jdbcType="DECIMAL mode="OUT" />
<parameter property="RESULT_MSG"  javaType="java.lang.String"  jdbcType="VARCHAR"  mode="OUT" />
</parameterMap>

<procedure id="callProceduer" parameterMap="proceduerResultMap">
<![CDATA[
{ CALL PROC_USER_PROCEDUER(?,?,?,?) }
]]>
</procedure>



-- Proceduer
create or replace PROCEDURE PROC_USER_PROCEDUER​
(
REQUEST_PARAM_STR VARCHAR2
, REQUSET_PARAM_NUM NUMBER
, RESULT_CODE OUT NUMBER​
, RESULT_MSG OUT VARCHAR2

IS ​
BEGIN
   -- 업무 로직 수행

RESULT_CODE := 0;
RESULT_MSG := 'SUCCESS';

END;​​


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함