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();

解决方案 »

  1.   

    谢谢,
    不过我要的不是返回参数的值,而是存储过程里"return"返回的值
      

  2.   

    如果想在存储过程运行后取下面的这几个值
    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);
      

  3.   

    大家都知道,存储过程里有一个语句为return,假定我在过程最后写return 99
    请问'99'这个数怎么得到.
    registerOutParameter和getInt的用法我知道,但那是取的存储过程返回值,
    我要的是"return status ".
      

  4.   

    我的存储过程如下:
    create proc up_PT
    as
    begin
    return 99
    end
    ___________
    请问我要如何才能得到返回值99,如果方便请写出具体一点的代码.
    谢谢
      

  5.   

    给出一个程序片断,希望有参考价值
    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(); }
    }