ibatis 호출 oracle 저장 프로 세 스, 매개 변수 형식 INOUT
저장 프로시저
CREATE OR REPLACE PROCEDURE test(
p_userName in varchar2,
p_age in number,
p_res in out varchar2
)
as
i_count number;
--i_age number;
begin
-- ,
-- : count ,
-- select count(username),age into i_count,i_age from ....
-- , ( )
-- oracle
select count(username) into i_count from userinfo where username=p_username;
--if SQL%NOTFOUND then
-- p_res := '-2';
--return;
--end if;
if(0 <> i_count)then
insert into userinfo(username,age) values(p_username,p_age);
commit;
p_res := '0';
else
p_res := '-2';--
end if;
exception
when others then
p_res := '-1'; --
rollback;
end test;
sqlMap 설정 파일
<sqlMap>
<parameterMap id="test" class="java.util.HashMap">
<parameter property="userName" jdbcType="varchar2" javaType="java.lang.String" />
<parameter property="age" jdbcType="int" javaType="java.lang.Integer" />
<parameter property="res" jdbcType="varchar2" javaType="java.lang.Integer"
mode="INOUT" />
</parameterMap>
<procedure id="testPro" parameterMap="test">
{call puc_test(?,?)}
</procedure>
</sqlMap>
저장 프로 세 스 타 임 스 가 잘못 되 었 습 니 다. regist output parameter is failed 는 반나절 동안 원인 을 찾 았 지만 찾 지 못 했 습 니 다. 발견 하 였 습 니 다.
<parameter property="res" jdbcType="varchar2" javaType="java.lang.Integer"
mode="INOUT" />
여기 mode = "INOUT" 를 mode = "IN" 으로 바 꾸 면 문제 가 없고 아무리 생각해 도 이해 가 되 지 않 습 니 다. 마지막 으로 우연 한 기회 에 만약 mode = "INOUT" 이 jdbdType 이 varchar 2 를 사용 할 때 대문자 로 써 야 한 다 는 것 을 알 게 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 작업 은 Clob 또는 NClob 데이터 형식의 저장 프로 세 스 인 스 턴 스 를 포함 합 니 다.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.