SP返回结果集 - SQL Server - Java

时间:2015-02-07 19:02:00

标签: java sql-server hibernate sql-server-2008 jdbc

我认为给定的存储过程只返回调用代码(例如JDBC / Hibernate),而只返回执行的最后一个SELECT的结果集。但是,如果SP的正文中存在/执行了多个SELECT,那么它似乎会返回多个结果集,更糟糕的是:似乎JDBC / Hibernate检测到第一个结果设置为实际结果。

我的理解不正确吗?任何人都可以澄清这是如何工作的?引用一些权威参考文献(照例)是可取的。

1 个答案:

答案 0 :(得分:1)

SQL Server将从执行存储过程返回所有结果集,而不仅仅是最后一个。

如果SP返回的结果集不止一个,那么它们将按顺序返回,除非出现任何错误,否则将返回所有结果集。

E.G:

CREATE PROCEDURE MultipleResults
AS
BEGIN
SELECT 'Result #1'
SELECT 'Result #2'
SELECT 'Result #3'
END

以上将返回3个结果集,每个结果集都有一行。 See example N.

就个人而言,我并不喜欢这个,因为大多数工具都不了解多个工具可以退回并且无法正常使用它。我尝试保留每个SP返回一个结果集(如果有的话)。