这是一个非常愚蠢的示例,但是如果我需要从订单表中获取最大订单ID,并且有两个选项(我知道还有更多选择,但是我只对这两个感兴趣)。我有兴趣知道哪个最终会减少开销。

第一个简单地选择值的对象:

CREATE PROCEDURE GetLastOrderID
AS
SELECT Max(OrderID) FROM Orders


然后使用相应的C#代码创建一个SQLCommand以执行proc,调用.ExecuteScalar,然后将该值转换为int。

第二个将值作为输出参数传递出去

CREATE PROCEDURE GetLastOrderID (@MaxOrderID INT OUTPUT)
AS
SET @MaxOrderId = Max(OrderID) FROM Orders


然后使用相应的C#代码创建一个SQLCommand来执行proc,添加一个int类型的输出参数,然后调用.ExecuteNonQuery,最后获取该输出参数的值。

一个人比另一个人有什么真正的好处吗?我的直觉是,第一种选择将花费更多的时间/资源,因为没有给出明确的类型,但是我很想知道那里是否有明确的答案。 (或至少有一个在权威方面胜过我的“直觉”)

最佳答案

没有。

与实际运行TSQL MAX()语句(除行数不多的情况)相比,您所指的开销可以忽略不计。

使用最容易理解和最易于维护的表格。

确定性能问题后,请担心性能。

关于c# - 从存储的proc返回值作为输出参数与SELECT语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4593492/

10-11 02:59