我在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
和语句。Commit
提交后,我正在设置 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);