2016-05-14 9 views
-2

データベース内のすべての給与を変更するパラメータでCallableStatementを使用することに固執しました。javaでパラメータを指定してプロシージャを呼び出す

ここに手順があります。 Ratioは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(); 

ありがとうございました。

編集:この投稿がアップアップされた理由は分かりませんが、問題はTimのおかげで解決されました。

答えて

0

あなたは誤解されていますinoutパラメータです。

この:

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(); 
関連する問題