No caso de ocorrer um erro quando a instrução SELECT é executada pela primeira vez, isto impede que seja aberto um objeto ResultSet para a mesma. O mesmo erro não fecha o ResultSet quando ocorre após o ResultSet ter sido aberto.
Por exemplo, se ocorrer um erro de divisão-por-zero quando o método executeQuery for chamado por java.sql.Statement ou java.sql.PreparedStatement, será lançada uma exceção e não será retornado nenhum conjunto de resultados, enquanto que, se ocorrer o mesmo erro quando o método next for chamado no objeto ResultSet, isto não fará com que o conjunto de resultados seja fechado.
Podem ocorrer erros durante a criação do ResultSet, se o sistema executar parcialmente a consulta antes da primeira linha ser trazida. Isto pode acontecer em qualquer consulta que utiliza mais de uma tabela, e em consultas que utilizam agregações, GROUP BY, ORDER BY, DISTINCT, INTERSECT, EXCEPT e UNION.
Fechar um Statement faz com que todos os objetos ResultSet abertos para esta instrução sejam fechados também.
O nome do cursor para o cursor do ResultSet pode ser definido antes das instrução ser executada. Entretanto, uma vez executada, o nome do cursor não poderá mais ser alterado.