1. 程式人生 > >mybatis調取oracle execute immediate動態拼接儲存過程返回結果

mybatis調取oracle execute immediate動態拼接儲存過程返回結果

create or replace procedure test_len (filed varchar2,res out varchar2) is
/**
**描述
**/
begin
  if(length(filed)>10) then
      res:='error';
      dbms_output.put_line('error');
    else
      res:='success';
      dbms_output.put_line('success');
    end if;
end test_len;
2:mybatis xml
<resultMap type="java.util.HashMap" id="resultMap">
       <result column="pro" property="pro" javaType="java.lang.String" jdbcType="VARCHAR"/>      
       <result column="res" property="res" javaType="java.lang.String" jdbcType="VARCHAR"/>
</resultMap>
 
<select id="ardoData" statementType="CALLABLE" parameterType="java.util.HashMap" resultMap="resultMap">
{call dynamic_pro(#{pro,mode=IN,jdbcType=VARCHAR},#{res,mode=OUT,jdbcType=VARCHAR})}
</select>
3:dao
public String ardoData(Map<String, String> paramMap);
4:service實現類
public String ardoData(String pro) {
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("pro", pro);
dao.ardoData(paramMap);
System.out.println(paramMap.get("res"));
return paramMap.get("res");
}
5:調取過程
String pro = " test_len (‘銅雀深宮鎖二喬’,:res)";
System.out.println("呼叫的儲存過程:"+pro);
String result = service.ardoData(pro);
System.out.println("結果:"+ result);