我在使用CallableStatement时遇到了一个参数,该参数应该改变数据库中的所有工资。
这是程序。比率不在Employee类中。
create or replace PROCEDURE CHANGE_SALARY
(ratio DECIMAL) AS
BEGIN
Update employee SET salary=round(salary/ratio);
end;
无法找到如何实施。我需要从“field_getRatio”获得比率并发送到程序以应用所有工资。
String sql = "{call change_salary(?)}";
CallableStatement cStmt = dbConnection.prepareCall(sql);
cStmt.registerOutParameter(1, Types.DECIMAL);
cStmt.execute();
感谢您的帮助。
编辑:不知道为什么这篇文章被投票赞成但问题已经解决,感谢蒂姆。
答案 0 :(得分:1)
您误解in
和out
参数。
此:
CallableStatement cStmt = dbConnection.prepareCall(sql);
cStmt.registerOutParameter(1, Types.DECIMAL);
cStmt.execute();
声明你的比率参数是程序的输出,但它不是。
你应该做的事情如下:
CallableStatement cStmt = dbConnection.prepareCall(sql);
cStmt.setObject(1, theRatio, Types.DECIMAL);
cStmt.execute();