본문 바로가기
프레임워크/MyBatis

[Mybatis] postgreSql 프로시저(Procedure) 호출하기

by so5663 2023. 3. 16.

이런 프로시저가 있다고 가정하겠습니다.

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를 적어줘야 한다.