[ http://issues.apache.org/jira/browse/IBATIS-202?page=comments#action_12360823 ]
Sven Boden commented on IBATIS-202: ----------------------------------- This could be closed as a duplicate of IBATIS-220 Sven > DB2 database; stored procedure, upon null result set, returns > java.lang.NullPointerException > -------------------------------------------------------------------------------------------- > > Key: IBATIS-202 > URL: http://issues.apache.org/jira/browse/IBATIS-202 > Project: iBatis for Java > Type: Improvement > Components: DAO > Versions: 2.1.5 > Environment: DB2 database, db2jcc.jar driver, jdk1.4 > Reporter: Carl Gulovsen > Priority: Minor > > Hello: First time post, please excuse any ethic violations. > I am calling a stored procedure which should return a result set within a DB2 > database. The issue I am having is the procedure checks IN parameters, > checks to see if your userID can even run the SP, etc. Within my unit tests > I trigger these checks and the SP sets the error return code, the SQLSTATE, > SQLCODE, and an output message. Because of the errors, the Cursor for the > result set is never created. The process throws a NullPointerException > when attempting to process the result set. > SqlExecutor.executeQueryProcedure() is called: > public void executeQueryProcedure(RequestScope request, Connection conn, > String sql, Object[] parameters, > int skipResults, int maxResults, > RowHandlerCallback callback) > throws SQLException { > ... > cs.execute(); > rs = cs.getResultSet(); > /* here the rs is null */ > ... > handleResults(request, rs, skipResults, maxResults, callback); --> > steping into handleResults > private void handleResults(RequestScope request, ResultSet rs, int > skipResults, int maxResults, RowHandlerCallback callback) throws SQLException > { > try { > request.setResultSet(rs); > ResultMap resultMap = request.getResultMap(); > if (resultMap != null) { > // Skip Results > if (rs.getType() != ResultSet.TYPE_FORWARD_ONLY) { > .... > Here the rs throws the null pointer. > Would it be possible for you to add: > private void handleResults(RequestScope request, ResultSet rs, int > skipResults, int maxResults, RowHandlerCallback callback) throws SQLException > { > try { > request.setResultSet(rs); > ResultMap resultMap = request.getResultMap(); > if (rs != null && resultMap != null) { > // Skip Results > if (rs.getType() != ResultSet.TYPE_FORWARD_ONLY) { > . > Here you would check to see if there is a null result set before process. I > believe it to be relatively common that a stored procedure would not return a > result set when errors occur. > Thank you. > Carl -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira