【问题标题】:stored procedure out return always 0.0存储过程输出总是返回 0.0
【发布时间】:2013-01-17 12:07:41
【问题描述】:

我是 jdbc 的新手,我的程序总是返回 0.0...帮助

 CallableStatement cs= con.prepareCall("{ call  getbalance(?,?) }");
    cs.setInt(1, 1234);
    //cs.setString(2, "dfdf");
    cs.registerOutParameter(2, Types.DOUBLE,23);
    cs.execute();
    System.out.println("Balance is "+ cs.getDouble(2));

             CREATE PROCEDURE `getbalance`( acno int, out amt int)
              begin 
                       select bal * amt from bank WHERE accno=acno; 
               end;

【问题讨论】:

    标签: mysql stored-procedures jdbc


    【解决方案1】:

    我认为你需要这个,将值设置为 amt 变量。

    Set amt = (select bal * amt from bank WHERE accno=acno); 
    

    【讨论】:

      【解决方案2】:

      设置参数,账号是多少?是 1 还是 1234?

      cs.setInt(1, 1234);
      

      您输入的 acno 可能没有记录...

      您已输入,

      select bal * amt from bank WHERE accno=acno; 
      

      不应该是下面的,给定你有输入和输出参数

      select bal INTO amt from bank WHERE accno=acno; 
      

      编辑后的 ​​SP 将是:

      CREATE PROCEDURE `getbalance`( IN acno int, OUT amt int)
       AS
          BEGIN 
                       SELECT bal INTO amt FROM bank WHERE accno=acno; 
          END;
      

      【讨论】:

      • 1 是参数的索引,1234 是传递的值
      • cs.setInt(1, 1234) 是绝对正确的。该语句中没有索引为 1234 的参数。
      • 天哪!让那部分感到困惑。但是,如果这是 OP 打算做的,那么在答案中设置 out 参数和 rest 是正确的。将 Bal 乘以 amt 将返回零。 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多