我认为给定的存储过程只返回调用代码(例如JDBC
/ Hibernate
),而只返回执行的最后一个SELECT
的结果集。但是,如果SP的正文中存在/执行了多个SELECT
,那么它似乎会返回多个结果集,更糟糕的是:似乎JDBC
/ Hibernate
检测到第一个结果设置为实际结果。
我的理解不正确吗?任何人都可以澄清这是如何工作的?引用一些权威参考文献(照例)是可取的。
答案 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返回一个结果集(如果有的话)。