iBatis调用mssql2000存储过程无法更新数据库?
在Dao中的方法如下:
public static String getBillnum(Integer serid) throws SQLException{
SqlMapClient sqlMap=Ibatissqlmap.getSqlMapInstance();
HashMap mapparam=new HashMap();
String out_billnum = "0";
mapparam.put("In_serid",serid);//存储过程输入参数
mapparam.put("Out_billnum",out_billnum);//存储过程输出参数
try{
sqlMap.startTransaction();
sqlMap.queryForObject("Serno.getBillnum",mapparam);
sqlMap.commitTransaction();
}catch(Exception e ){
e.printStackTrace();
}
finally{
sqlMap.endTransaction();
}
out_billnum=mapparam.get("Out_billnum").toString();
System.out.println("============================");
System.out.println("billnumber="+out_billnum);
System.out.println("============================");
return out_billnum;
}
这里涉及一个serno表,该方法的目的是取出一个流水号,而表serno中则保存着当前序号,每次生成该流水号时,都是先加1再取出,具体实现过程写在存储过程中,存储过程中使用了mssql自己的事务控制.如果在mssql的查询分析器手动执行能够成功,且序号也加1了.但用Dao中的该方法执行时,语句System.out.println("billnumber="+out_billnum);能够打印出正确的序号,但数据库却无法更新,以至第次取出都是同样的值.通过SQL事件探查器找到执行语句,然后拷贝到SQL查询分析中执行,却能成功.不知有没有大虾能够解决?50分感谢!!!