What happens if you swap the cursors round in your SP? Does the first ResultSet then contain the right results?
I've experienced problems in the past with Sybase drivers whereby if you make any changes to the statement's parameters after having executed it (or even access output parameters, I think) then the statement loses (or resets) its ResultSet. Could that be your problem?
Is there a logical difference between an empty ResultSet and a null one, i.e. if your query returns zero rows, is ResultSet null or just created empty? Obviously I realise there's a physical (Java) difference.