2011-12-21 76 views
3

我有一个小的存储过程,需要返回一个记录计数(一个单个值值)。有什么更好的使用? A RETURN返回结果还是参数OUTPUT返回结果?在TSQL存储过程中返回单个值有什么更好:RETURN或OUTPUT?

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

+0

更好的是什么?性能?可读性?最惊喜?还有别的吗? – Oded 2011-12-21 09:47:32

+0

@付款jep,请选择。我试图理解为什么在单一结果的情况下一个人会比另一个人好。 – 2011-12-21 09:48:15

回答

4

使用输出参数。

它是更少资源密集型处理在客户端

并返回比通过SELECT数据集一个标量参数(或OUTPUT子句等)被限制为int数据类型。这里没关系,但通常返回将用于状态和错误

+0

那么基本上使用返回是功能的错误使用? – 2011-12-21 10:03:42

+1

@ KeesC.Bakker:是的。这也是不可靠的情况下错误http://stackoverflow.com/questions/2965211/sql-server-stored-procedure-return-code-oddity – gbn 2011-12-21 10:09:51

+0

你能评论这个问题的标量吗? http://stackoverflow.com/questions/8589819/what-is-better-to-return-single-value-from-stored-procedure-to-net-output-para – 2011-12-21 12:40:20

1

如果您已经知道您的SQL语句的执行会返回一行数据,那么您应该始终优先使用带有输出参数的存储过程来代替单行选择语句。

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


我认为return,并以类似的方式output工作。但是,通常,return最常用于从过程返回状态结果或错误代码。

+0

我没有在代码中嵌入sql。我正在使用存储过程。 – 2011-12-21 10:04:32

+0

但是你在上面做一个“select”来返回信息吗? – 2011-12-21 10:07:02

+0

那么......实际的问题是,是用一个返回值还是用一个out参数来做。我没有返回'select count(*)...' – 2011-12-21 12:18:53

0

我会建议使用OUTPUT参数,因为它的成本较低。返回可以在这里使用,因为您正在返回count(int类型),但这不可取,因为返回用于状态或错误。