mysqlに署名付きのプロシージャがあります
"coursePK bigint(20), groupName varchar(1000), userPK bigint(20), newClassPK bigint(20), assignmentFlag varchar(1), rosterFlag varchar(1), gradebookFlag varchar(1), isHavingMasterClass varchar(1), OUT newBookPK bigint(20)"
プロシージャの最後にはStart transactionandCommitステートメントがあります。コミット後、OUT パラメータの値を設定しています。
現在、私の Java コードはプロシージャを呼び出すために Callable ステートメントを使用しており、callableStatement.getString(index)orを使用して out パラメータを取得しているときcallableStatement.getInt(index)、常にそれぞれ null と 0 を取得しています。
しかし、mysql クエリ ブラウザからプロシージャを実行し、最後に行を追加するとSELECT newBookPK、正しい出力パラメータが得られます。
Javaコードからも正しい値を取得するのを手伝ってください。
JAVAから出力パラメータを取得する際に間違っているところ。
Java コードは次のとおりです。
callableStatement = conn.prepareCall("{call copy_custombook_details(?,?,?,?,?,?,?,?,?)}"); //coursePK bigint(20), groupName varchar(1000), userPK bigint(20), newClassPK bigint(20), assignmentFlag varchar(1), rosterFlag varchar(1), gradebookFlag varchar(1), isHavingMasterClass varchar(1), OUT newBookPK bigint(20)
count=1;
callableStatement.setString(count++, coursePK);
callableStatement.setString(count++, groupName);
callableStatement.setString(count++, userPK);
callableStatement.setString(count++, newClassPK);
callableStatement.setString(count++, "N");
callableStatement.setString(count++, "N");
callableStatement.setString(count++, "N");
callableStatement.setString(count++, isHavingMasterClass);
callableStatement.registerOutParameter(count++, Types.VARCHAR);
callableStatement.execute();
newBookPK = callableStatement.getString(9);