callstatement = conn.prepareCall("{call packperson.allperson(?,?,?)}"); callstatement.registerOutParameter(1,java.sql.Types.INTEGER);
callstatement.registerOutParameter(2,java.sql.Types.VARCHAR);
callstatement.registerOutParameter(3,java.sql.Types.VARCHAR); System.out.println("*******************4");
callstatement.execute();
System.out.println("*******************5");
rs = callstatement.getResultSet();
callstatement.registerOutParameter(2,java.sql.Types.VARCHAR);
callstatement.registerOutParameter(3,java.sql.Types.VARCHAR); System.out.println("*******************4");
callstatement.execute();
System.out.println("*******************5");
rs = callstatement.getResultSet();
不过我要的不是返回参数的值,而是存储过程里"return"返回的值
callstatement.registerOutParameter(1,java.sql.Types.INTEGER);
callstatement.registerOutParameter(2,java.sql.Types.VARCHAR);
callstatement.registerOutParameter(3,java.sql.Types.VARCHAR);
请使用下面的方法
int intRetValue=rs.getInt(1);
String strRetValue1=rs.getString(2);
String strRetValue2=rs.getString(3);
请问'99'这个数怎么得到.
registerOutParameter和getInt的用法我知道,但那是取的存储过程返回值,
我要的是"return status ".
create proc up_PT
as
begin
return 99
end
___________
请问我要如何才能得到返回值99,如果方便请写出具体一点的代码.
谢谢
private final String PROC_UPDATE= "begin ? :=CRM_001.CUSTOMERSEDIT (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?); end;";
Connection con = null;
CallableStatement cstmt=null;
try {
con = DbConnectionManager.getConnection();
cstmt=con.prepareCall(this.PROC_UPDATE); cstmt.registerOutParameter(1,Types.INTEGER);
cstmt.setString(2,this.custCode) ;
cstmt.setString(3,this.name) ;
cstmt.setString(4,this.gender) ;
cstmt.setString(5,this.addr) ; cstmt.setString(6,this.country) ;
cstmt.setString(7,this.state) ;
cstmt.setString(8,this.city) ;
cstmt.setString(9,this.zip) ;
cstmt.setString(10,this.tel) ; cstmt.setString(11,this.fax) ;
cstmt.setString(12,this.email);
cstmt.setString(13,this.passType) ;
cstmt.setString(14,this.passId) ;
cstmt.setInt(15,this.custClass) ; cstmt.setInt(16,this.payType) ;
cstmt.setString(17,this.bankName) ;
cstmt.setString(18,this.bankAccount) ;
cstmt.setString(19,this.bankPayTel) ;
cstmt.setString(20,this.cardNo) ; if(cardExpDate==null)
{
cstmt.setDate(21,null);
}
else
{
cstmt.setDate(21,new java.sql.Date(this.cardExpDate.getTime())) ;
}
cstmt.setInt(22,this.custType);
if(this.creditLimit==0)
{
cstmt.setString(23,null);
}
else
{
cstmt.setDouble(23,this.creditLimit);
} cstmt.setInt(24,this.discount);
cstmt.setInt(25,this.invDueDays) ;
cstmt.setString(26,this.grpCode) ;
cstmt.setString(27,this.cycleCode) ;
cstmt.setString(28,this.providerCode) ; cstmt.setString(29,this.note) ;
cstmt.setString(30,auth.getCode()) ;
cstmt.execute();
int returnValue=cstmt.getInt(1);
if(returnValue==1){//失败(DB Error)
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new DbErrorException("Db Error occur in DbUnifiedTrfDates.insertIntoDb");
}else if(returnValue==-1){//不存在
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new NoSuchElementException("此客户不存在!");
}else if(returnValue==-2){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("用户类型变化无效!");
}
else if(returnValue==-3){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("限额后付费用户,限额必须大于已消费金额 !");
}
else if(returnValue==-4){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("用户类型、用户级别与PRODUCTS不相符!");
}
else if(returnValue==-5){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("折扣率必须在0与100之间!");
}
else if(returnValue==-6){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("后付费用户出帐周期不能为空!");
}
else if(returnValue==-7){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("限额后付费用户限额不能为空!");
}
else if(returnValue==-8){
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
throw new OtherException("产品信息不存在!");
}
}
catch(SQLException sqle ) {
ObjectPoolManager.remove(FinalConstant.CUSTOMERS,new String(this.custCode));
com.ipbs.util.Log.println( "SQLException in DbCustomers.java:saveToDb(): " + sqle );
sqle.printStackTrace();
throw new DbErrorException(sqle.getMessage());
}
finally {
try { cstmt.close(); }
catch (Exception e) { e.printStackTrace(); }
try { con.close(); }
catch (Exception e) { e.printStackTrace(); }
}