반응형
프로시저를 호출할 때 콘솔로 넘겨주는 값은 IN 으로 작성한다. 그렇다면, 프로시저를 호출한 후 내부에서 생성된 값을 어떻게 외부로 넘길까?
외부로 값을 넘겨주고 싶으면 OUT 파라미터를 사용하면 된다.
CREATE DEFINER = `TEST`@`%` PROCEDURE `SP_TEST` (
IN iTEST_A VARCHAR(10)
IN iTEST_B INT(11)
OUT vTEST_OUT VARCHAR(20)
)
BEGIN
...
END;
프로시저에서는 위와 같이 OUT 파라미터를 선언해주었다.
vTEST_OUT 은 내부에서 변수처럼 사용할 수 있다. 아래와 같은 방법으로 vTEST_OUT 에 값을 저장해줄 수 있다.
-- 1.
SET TEST_VALUE = vTEST_OUT
-- 2.
SELECT TEST_VALUE
INTO vTEST_OUT
FROM TEST_TABLE
xml 파일에서는 아래와 같이 작성할 수 있다. 이때, statementType="CALLABLE" 을 작성해주지 않으면
(conn=28804) Parameter at position 3 is not set 에러가 발생한다.
<insert id="INS00" parameterType="map" statementType="CALLABLE">
<trim prefix="{call" suffix="}">
SP_TETS ( #{ TEST_A }
, #{ TEST_B }
, #{ TEST_OUT, javaType=string, jdbcType=VARCHAR, mode=OUT }
)
</trim>
</insert>
콘솔에 찍힌 프로시저 호출문 중 OUT 부분은 ? 가 아닌, '<OUT>' 으로 표시되어야한다.
https://skylarcoding.tistory.com/203#google_vignette
[SQL] 프로시저 OUT 파라미터 콘솔에서 값 넘기는 방법
OUT 파라미터 콘솔에서 값 전달하기 아래 에러메세지가 발생했다. 발생할 것을 예상한 메세지이기도 했다. [42000][1414] (conn=30662) OUT or INOUT argument 44 for routine 파일명 is not a variable or NEW pseudo-variable
skylarcoding.tistory.com
------자바에 등록하는 방법
https://skylarcoding.tistory.com/215
반응형