【问题标题】:When will a stored procedure return a result set存储过程何时返回结果集
【发布时间】:2016-03-28 18:32:17
【问题描述】:

存储过程何时返回结果集的规则是什么?

如果我在底部附近添加 SELECT 语句,它将作为另一个结果集返回。

但是我在开头添加了一个SELECT 然后它不会在结果集中返回。

什么情况下会返回一个SELECT作为结果集?如果后面跟其他语句好像没有返回,是哪些?

【问题讨论】:

  • 你能发布一个不返回 SELECT 语句的例子吗?
  • 如果你有一个“正常”的SELECT 语句(不是从结果中设置变量 - 而只是选择数据) - 它将返回给调用者
  • 您是说有时会返回多个结果集吗?你的存储过程在select 语句之后做了什么?结果返回给什么程序? (了解这一点很重要,因为它们解析结果的方式因调用应用程序而异。)
  • @marc_s 是的,这是一个 SELECT 似乎没有在结果集中返回的场景,即在设置变量时。

标签: sql-server


【解决方案1】:

一个存储过程可以返回多个结果集。

如果您正在使用来自 asp.net 等前端应用程序的存储过程,您可能需要遍历结果集集合才能查看所有内容。

存储过程中的其他语句阻止 SELECT 语句返回结果的唯一方法是阻止它执行。 (如IF...ELSE 块,或停止执行的RETURN 命令等)

所以回答“什么是规则?”,规则是,如果 SELECT 语句被执行,并且如果它返回一个结果集,那么它将返回一个结果集。

【讨论】:

    【解决方案2】:

    存储过程返回最后一个SELECT 作为结果。

    不包括select into 或使用select 设置变量

    您可以使用 UNION 执行一些技巧来返回多种结果,结果广告使用辅助字段来分隔结果。

    看看multiple result in stored procedure

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2011-04-22
      • 2015-03-06
      相关资源
      最近更新 更多