0

これを実行中にエラーが発生しました:

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");

2. cs.setString(1, user.getUserId());

3. cs.registerOutParameter(2, java.sql.Types.INTEGER); //<--- ERROR at this line

4. cs.execute();

5. String lastIsertId=cs.getString(2);

ストアド プロシージャは次のとおりです。

CREATE

    PROCEDURE `cheque_alert`.`SaveLabourDetailsHead`(IN wage_entered_by VARCHAR(10),OUT LastInsertId INT)

    BEGIN
    INSERT INTO `cheque_alert`.`labour_wage_head`
            (
             `wage_entered_by`,
             `entered_date_time`)
    VALUES (wage_entered_by,
         NOW());

          SELECT LAST_INSERT_ID() INTO LastInsertId;

    END$$

DELIMITER ;

このコードの問題を指摘してください..

4

4 に答える 4

1

間違った手順を呼び出しています。手順SaveLabourDetailsHeadがあり、電話し ています

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}");  
                                         ↑  

への変更、

1. cs = getCon1().prepareCall("{CALL SaveLabourDetailsHead(?)}");  

文字列パラメータを設定しますwage_entered_by

于 2013-10-25T06:09:25.400 に答える
0

私は同じ問題を抱えていましたが、根本的な原因がプロシージャ名であったため、出力例外は誤解を招くものです。

データベースに存在しない間違った手順を入力しました。

「ルーチンが存在しません」のような SQL 例外を提供する代わりに、次のようにしました。

java.sql.SQLException: Parameter number 2 is not an OUT parameter.
于 2020-02-27T11:19:31.243 に答える