【问题标题】:What is better to return a single value in TSQL stored procedure: a RETURN or an OUTPUT?在 SQL 存储过程中返回单个值哪个更好:RETURN 还是 OUTPUT?
【发布时间】:2011-12-22 21:48:15
【问题描述】:

我有一个需要返回记录计数的小型存储过程(单个值)。用什么比较好? RETURN 返回结果还是 OUTPUT 参数返回结果?

我正在使用 C#/.Net 与 SQL 服务器“对话”。

【问题讨论】:

  • 什么更好?表现?可读性?最不意外?还有什么?
  • @Oded jep,任君挑选。我试图理解为什么在单一结果的情况下一个会比另一个更好。

标签: sql-server sql-server-2005 tsql return


【解决方案1】:

使用输出参数。

在客户端通过 SELECT(或 OUTPUT 子句等)处理标量参数比处理数据集占用更少的资源

并且 RETURN 仅限于 int 数据类型。这在这里无关紧要,但通常 RETURN 将用于状态和错误

【讨论】:

【解决方案2】:

如果您已经知道 SQL 语句的执行将返回单行数据,那么您应该始终更喜欢带有输出参数的存储过程而不是单行选择语句。

与在应用程序代码中嵌入简单的 SQL 语句相比,使用存储过程有几个优点。除了所有这些优点之外,您保存的不是打开记录集来获取数据,您只需调用带有输出参数的存储过程。使用记录集时,数据源对象返回的查询结果包括数据和元数据。元数据通常比数据大得多,或者是查询结果的重要组成部分。因此,您可能希望使用带有输出参数的存储过程。


我认为returnoutput 的工作方式类似。但是,一般来说,return 最常用于从过程返回状态结果或错误代码。

【讨论】:

  • 我没有在代码中嵌入 sql。我正在使用存储过程。
  • 但是您是否在其上制作select 以返回信息?
  • 嗯...实际的问题是使用返回值还是使用 out 参数。我不会返回 select count(*) ...
  • 我认为returnoutput 的工作方式类似。但是,一般来说,return 最常用于从过程返回状态结果或错误代码。
【解决方案3】:

我会建议使用 OUTPUT 参数,因为它的成本更低。此处可以使用 return,因为您要返回 count(int 类型),但不建议这样做,因为 return 用于状态或错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多