【问题标题】:SQL Server JDBC returns many result set when a stored procedure invoked调用存储过程时,SQL Server JDBC 返回许多结果集
【发布时间】:2011-01-09 04:35:26
【问题描述】:

默认情况下,SQL Server JDBC 驱动程序返回在存储过程中执行的所有 SELECT 查询的结果集。我必须调用 CallableStatement.getMoreResults() 并关闭所有这些。执行 SQL Server 存储过程时,我不希望任何结果集作为返回值;执行 SQL Server 存储过程时有什么方法可以防止返回结果集?

【问题讨论】:

  • 所以您正在调用一个执行多个 SELECT 查询的存储过程,但您不想要结果?存储过程还有其他副作用吗?只是想更好地理解这个问题。
  • 除了更新几个表之外没有其他副作用。
  • 不只是关闭语句工作吗?它应该关闭所有打开的结果集。

标签: java sql-server jdbc


【解决方案1】:
 statement.executeUpdate()

应该在不返回结果集的情况下执行你的 sql。

【讨论】:

  • 目前我正在使用 CallableStatement 语句 = cx.prepareCall(ProcedureSQL);将尝试使用 executeUpdate()
  • 尝试使用 executeUpdate 运行存储过程时抛出异常:com.microsoft.sqlserver.jdbc.SQLServerException: INSERT/UPDATE 无法执行,请重试。
【解决方案2】:

我不确定我是否理解。您是否在您的过程中执行您不想返回的选择语句?返回的受影响的行是否是您不想要的结果集?如果是后者,您可以将 SET NOCOUNT ON 添加到过程的开头,以防止返回受影响的行。

【讨论】:

  • SELECT 语句作为结果集返回。我正在使用 CallableStatement 语句 = cx.prepareCall(ProcedureSQL)
猜你喜欢
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 2011-04-22
  • 2019-11-09
相关资源
最近更新 更多