存储过程输出总是返回 0.0
Posted
技术标签:
【中文标题】存储过程输出总是返回 0.0【英文标题】:stored procedure out return always 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;
【问题讨论】:
【参考方案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 将返回零。 :-)以上是关于存储过程输出总是返回 0.0的主要内容,如果未能解决你的问题,请参考以下文章