이런 프로시저가 있다고 가정하겠습니다.
DB는 postgreSql 입니다.
CREATE OR REPLACE PROCEDURE public.prc_new_class_certificate_num
(
p_certificate_year character varying,
p_emp_type character varying,
p_learn_type_cd character varying,
p_certificate_issue_user character varying,
p_certificate_user_id character varying,
p_class_seq numeric,
p_course_seq numeric
) LANGUAGE plpgsql
AS ...
프로시저 마이바티스에서 사용하는 방법
<select id="test" statementType="CALLABLE">
<resultMap id="test" type="hashmap"></resultMap>
CALL PROCEDURE_NAME(
#{certificate_year, mode=IN, jdbcType=VARCHAR}
, #{emp_type, mode=OUT, jdbcType=VARCHAR, resultMap=test}
, #{learn_type_cd, mode=IN, jdbcType=VARCHAR }
, #{certificate_issue_user, mode=IN, jdbcType=VARCHAR }
, #{certificate_user_id, mode=IN, jdbcType=VARCHAR}
, #{class_seq, mode=IN, jdbcType=VARCHAR }::INTEGER
, #{course_seq, mode=IN, jdbcType=VARCHAR }::INTEGER
)
</select>
- statementType="CALLABLE" 를 꼭 선언해야 한다.
- 프로시져 파라메터중 IN 타입은 잡다구리한거 설정할 필요가 없지만, OUT 타입은 위와 같이 선언해 주고 resultMap 사용시에는 위에서 설정한 resultMap의 id를 적어줘야 한다.