我在Java应用程序中调用PL / SQL过程来更新数据库条目。
Connection connection = null;
CallableStatement preparedCall = null;
Integer result = 0;
preparedCall = connection.prepareCall("{ ?= call pkg_temp.update_data(?, ?)}");
preparedCall.registerOutParameter(1, OracleTypes.BOOLEAN);
preparedCall.setString(2, variable1);
preparedCall.setString(3, cariable2);
result = preparedCall.executeUpdate();
但我在executeUpdate()
中收到以下错误Severe: java.sql.SQLException: ORA-06550: line 1, column 13: PLS-00382: expression is of wrong type ORA-06550: line 1, column 7: PL/SQL: Statement ignored
原因:PL \ SQL不允许我注册到不是主要类型的布尔类型。
如何调用此功能?
答案 0 :(得分:1)
最后设法编写一个包装器来获取布尔值并返回一个像这样的整数。
Connection connection = null;
CallableStatement preparedCall = null;
Integer result = 0;
preparedCall = connection.prepareCall(
"BEGIN " +
" ?:= CASE pkg_temp.update_data(?, ?) "+
" WHEN TRUE THEN 1 " + " ELSE 0 " +
" END; " +
"END; "
);
preparedCall.registerOutParameter(1, OracleTypes.INTEGER);
preparedCall.setString(2, variable1);
preparedCall.setString(3, variable2);
result = preparedCall.executeUpdate();
int funcRetValue = preparedCall.getInt(1);
if (funcRetValue == 1) {
retValue = true;
} else {
retValue = false;
}