各位高人: 我今天建立了一个Java项目,使用iBATIS, 一开始还挺顺利, 使用一般的SQL也成功,调一个存储过程(没有输出参数的)也成功,然后调用带有输出参数的,却总是不成功。 我用的是   ibatis-2.3.4.726 下面贴出代码,都已经是最简单的了: 存储过程(有2个)  是 DB2 的CREATE PROCEDURE "DB2INST1"."PROC_J_XCJS_Ts2" ( 
   IN  "V_IN_X"   VARCHAR(10), 
   OUT "V_OT_2X"  VARCHAR(10) 
)    BEGIN          SET V_OT_2X = V_IN_X || '_link_' || V_IN_X; 
   END; 
CREATE PROCEDURE "DB2INST1"."PROC_J_XCJS_Test" ( 
   IN  "V_IN_X"   int, 
   OUT "V_OT_2X"  int 
)    BEGIN          SET V_OT_2X = V_IN_X * 2; 
   END; 
XML的配置(有两段)   <parameterMap id="testOutParam" class="map"> 
  <parameter property="V_IN_X"  jdbcType="INTEGER"  javaType="java.lang.Integer" mode="IN"  /> 
  <parameter property="V_OT_2X" jdbcType="INTEGER"  javaType="java.lang.Integer" mode="OUT" /> 
  </parameterMap>   <procedure id="XCJS_testOut" parameterMap="testOutParam"> 
  { call PROC_J_XCJS_Test( ? ) } 
  </procedure>   <parameterMap id="testOt2Param" class="map"> 
  <parameter property="V_IN_X"  jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN"  /> 
  <parameter property="V_OT_2X" jdbcType="VARCHAR"  javaType="java.lang.String" mode="OUT" /> 
  </parameterMap>   <procedure id="XCJS_testOt2" parameterMap="testOt2Param"> 
  { call PROC_J_XCJS_Ts2( ?, ? ) } 
  </procedure> Java代码:   List myList = re.selectAllAccounts ();  // 这句成功,就是从 iBATIS 官方的例子来的。下面接着用  re.sqlMapper 调一个不带输出参数的存储过程也成功   // 上面一行实际相当于执行   sqlMapper.queryForList( "..."); 是成功的   Map mPara = new HashMap(); 
  
  mPara.put( "V_IN_X",  new Integer(29) ); 
  mPara.put( "V_OT_2X", null ); // new Integer(0 ) 
  re.sqlMapper.update( "XCJS_testOut", mPara );   Map mPara2 = new HashMap();   mPara2.put( "V_IN_X", "OK" ); 
  mPara2.put( "V_OT_2X", "1"  ); 
  re.sqlMapper.update ( "XCJS_testOt2", mPara2 );   // 像这样调 不带输出参数的存储过程,是成功的。 多谢了!