프로시저를 통해 공통로직(함수)으로 만들어 둠으로써 계산할 값을 넘기면 원하는 로직의 결과 값(테이블 or 칼럼 or 성공/실패 등)만 받아올 수 있다.
대행업체 같은 느낌이다.
특이한 점이라고 하면 프로시저와 쿼리의 넘어가는 값과 가지고 오는 값의 갯수가 같아야 한다.
또 넘겨줄 값과 받아올 결과값이 한 프로시저안에 같이 들어가 있다.
<select id="updateWF1100DaoM013" parameterType="HashMap" statementType="CALLABLE" resultType="HashMap">
<![CDATA[ /* [WF1100Dao][updateWF1100DaoM013] 결재승인/재기안시 업무 프로시저 호출 - M_WF_1100_M_UP13 */ ]]>
EXEC S_WF_1100_03 #{PROC_NM}
,#{gvCommCd}
,#{WOFH_NO}
,#{O_RET_CODE, mode=OUT, jdbcType=VARCHAR, javaType=java.lang.String}
,#{O_RET_CMSG, mode=OUT, jdbcType=VARCHAR, javaType=java.lang.String};
SELECT #{O_RET_CODE} O_RET_CODE,#{O_RET_CMSG} O_RET_CMSG
</select>
....
/*
프로그램ID : S_WF_1100_03
프로그램명 : 결재승인/재기안시 업무프로시저 호출
*/
ALTER PROCEDURE [dbo].[S_WF_1100_03] (
@AS_PROC_NM NVARCHAR(200), /* 호출프로시저명 */
@AS_COMM_CD NVARCHAR(10), /* 회사코드 */
@AS_WOFH_NO NVARCHAR(20), /* 결재PID */
@O_RET_CODE NVARCHAR(100) OUTPUT, /* 처리결과코드 */
@O_RET_CMSG NVARCHAR(MAX) OUTPUT /* 처리결과메세지 */
)
....
WF1100Dao : XML 명
updateWF1100DaoM013 : XML안에 있는 update하는 쿼리 id
M_WF_1100_M_UP13 : 프로시저 명
PROC_NM, gvCommCd, WOFH_NO : 프로시저로 넘어가는 조건 값
O_RET_CODE : 프로시저 조건에 의한 연산 후 결과 값
O_RET_CMSG : 프로시저 조건에 의한 연산 후 결과 메시지
프로시저는 BEGIN, END, DECLARE, SET등을 이용해서 원하는 로직을 만들며 CRUD에 특화된 쿼리와 다르게 계산에 특화 되어있다.
프로시저에 대해 좀 더 학습이 필요하겠다.
좋은 글이네요. 공유해주셔서 감사합니다.