我认为给定的存储过程仅返回最后一个 SELECT
的结果集到调用代码(例如 JDBC
/Hibernate
) > 执行。但如果 SP 主体中存在/执行多个 SELECT
,它似乎会返回多个结果集,更糟糕的是:似乎 JDBC
/Hibernate
将第一个结果集检测为实际结果。
我的理解有误吗?谁能澄清这是如何工作的?像往常一样,引用一些权威引用文献是可取的。
最佳答案
SQL Server 将返回执行存储过程的所有结果集,而不仅仅是最后一个结果集。
如果 SP 返回多个结果集,则它们将按顺序返回,并且将全部返回,除非有任何错误。
例如:
CREATE PROCEDURE MultipleResults
AS
BEGIN
SELECT 'Result #1'
SELECT 'Result #2'
SELECT 'Result #3'
END
上面将返回 3 个结果集,每个结果集只有一行。 See example N.
就我个人而言,我不喜欢这个,因为大多数工具不理解可以返回多个并且不能正确使用它。我尝试保留每个 SP 返回的单个结果集(如果有)。
关于java - SP 返回的结果集 - SQL Server - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386124/