[ http://issues.apache.org/jira/browse/IBATIS-202?page=all ]
Clinton Begin closed IBATIS-202:
--------------------------------
Resolution: Duplicate
duplicate of ibatis-220
> 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