从oracle execute方法

时间:2015-04-24 11:32:35

标签: java oracle java-ee stored-procedures jdbc

我读到了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函数返回结果集,我的代码中的结果集会发生什么?它保持开放吗?如果是,我怎么能以这种方式关闭它?

1 个答案:

答案 0 :(得分:0)

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

关于关闭 - 关闭Statement并不强制所有基于它的ResultSet也被关闭,而IIRC,使用Oracle JDBC驱动程序,ResultSet可能确实关闭Statement关闭后仍保持打开状态。因此,如果存在,则必须明确关闭它。