从数据库存储过程中取值的问题
我在JAVA中调用DB2数据库中的存储过程,其中有三个参数,两个是IN,一个是OUT,
下面是代码,调出来的第三个参数得不到值。
private String getLateDays(String startDate){
String stopDays = "";
int stop=0;
if(isOwe(startDate)){
try {
CallableStatement cs = ds.AdoConn.prepareCall(
"{call usp_CalcLateDays(?,?,?)}");
cs.setTimestamp(1,ds.toDateTime(startDate));
cs.setTimestamp(2,ds.GetTimestamp());
cs.registerOutParameter(3,java.sql.Types.VARCHAR);
cs.executeUpdate();
// stop=cs.getInt(3);
// stopDays=String.valueOf(cs.getInt(3));
stopDays=cs.getString(3);
cs.close();
} catch (SQLException ex1) {
System.err.println("存储过程错误usp_CalcLateDays"+ex1.getMessage());
}
}
return stopDays;
}
问题点数:0、回复次数:5Top
1 楼zhz586(最终幻想)回复于 2004-11-04 19:32:26 得分 0
cs.registerOutParameter(3,java.sql.Types.VARCHAR)
这个里面再看看,这里应该是赋值吧
可能是这个问题,我个人理解!Top
2 楼shaopin(shaopin)回复于 2004-11-04 19:43:24 得分 0
1、确保存储过程本身正确
2、确保前两个参数数类型与值正确
3、cs.execute()
4、确保数据库表有数据Top
3 楼xuloveweb(眼睛好累)回复于 2004-11-06 05:11:24 得分 0
来学习的Top
4 楼haroyy(天平)回复于 2004-11-06 09:28:41 得分 0
cs.registerOutParameter(3,java.sql.Types.VARCHAR);
cs.execute();
两句顺序调过来Top
5 楼BillyW(阿弥陀佛)回复于 2004-11-06 10:00:10 得分 0
haroyy(天平) 说的不对,顺序没有问题。
我觉得有可能是输出参数类型的问题,调试你的存储过程,先看它本身有没有问题,再看返回值的类型。如果都没有问题的话,再使用db2的类型,比如oracle的:jdbc.oracle.OracleType.VARCHAR,不要用java.sql.Types.xxx试试Top




