从oracle执行方法检索返回值



我读到了Oracle中execute和executeQuery方法之间的差异,并看到了下面的文本

executeQuery()——这通常用于读取数据库输出将采用ResultSet的形式。通常地使用SELECT语句。

execute()--如果您不知道要使用哪种方法来执行SQL语句,则可以使用此方法。这将返回一个布尔值。符合事实的表示结果是ResultSet,FALSE表示其具有int值,该值表示受查询影响的行数。

这是我的问题。我用execute方法执行一个过程,但它只返回一个整数值。我检索的返回值如下:

stmt.execute(); 
output = stmt.getInteger(1);
close(stmt);               // statement
close(connection);         // connection

我在这里不使用ResultSet对象,因此我不会显式关闭任何类似ResultSet的对象。所以根据上面的文本,如果execute函数返回一个结果集,那么我的代码中的结果集会发生什么?它一直开着吗?如果是的话,我怎么能用那种方式把它关闭呢?

CallableStatement.getInt()ResultSet无关,它与存储过程的输出参数有关。如果存储过程返回了一个游标,那么就必须使用getResultSet()并从中处理结果。

关于关闭-关闭Statement并不意味着所有基于它的ResultSet也都关闭,而IIRC使用Oracle JDBC驱动程序,ResultSetStatement关闭后可能确实保持打开状态。因此,如果它存在,则必须显式关闭它。

最新更新