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 transaction
andCommit
ステートメントがあります。コミット後、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);